Получение значения текста внутри диапазона

#javascript #jquery #jquery-plugins #javascript-framework #jquery-events

#javascript #jquery #jquery-плагины #javascript-фреймворк #jquery-события

Вопрос:

Я работаю с плагином Flexigrid с помощью jQuery. Хорошо, итак, у меня есть div с двумя элементами span, они будут содержать текст / отображать текст для кнопок, которые предоставляет flexigrid. Проблема в том, что нет механизма для добавления идентификаторов к этим кнопкам, за исключением добавления другого текста.

 <div class="tdiv2>  
    <div class="fbutton">
        <div>
            <span class="view" style="padding-left: 20px;">Add</span>
        </div>
    </div>
    <div class="fbutton">
        <div>
            <span class="view" style="padding-left: 20px;">Delete</span>
        </div>
    </div>
</div>  
  

Вот как расположены кнопки. Итак, нажав на эту кнопку, я получаю текст внутри диапазона, как добавить, так и удалить. Теперь я хочу добавить тег класса к этому диапазону, чтобы отличать активную кнопку от другой.

Итак, мне пришла в голову идея, что если бы я мог получить span-text, который соответствует возвращаемому тексту, я мог бы добавить класс к этому диапазону.

Но когда я делаю

 alert($('.tDiv2 span').html()); 
  

Я получаю текст только первого диапазона, а не второго. Не мог бы кто-нибудь помочь мне с получением html обоих диапазонов, а не только первого.

Ответ №1:

Попробуйте это >

 $('.tDiv2 span').each(function(index, el) { alert($(el).html()); });
  

Комментарии:

1. Здравствуйте, когда я попробовал ваш код, он выдает мне эту ошибку. «el.html не является функцией»

2. Он по-прежнему выдает мне ту же ошибку. Я только что просмотрел документацию jquery, какая из них будет коллекцией?? Я понимаю, что функция будет обратным вызовом. «jQuery.each( коллекция, обратный вызов (indexInArray, valueOfElement) )»

3. Коллекцией будет объект, для которого она вызывается. В вашем случае это было бы $('.tDiv2 span') . Согласно документации, вам необходимо передать функцию обратного вызова с двумя параметрами. Можете ли вы предупредить $('.tDiv2 span').length и посмотреть, сколько в нем объектов?

4. Хорошо, я только что передал «el», а не «el.html ()», он дважды вернул элемент object span

5. только что исправил это. el по сути, это элемент dom, а не элемент jQuery. Итак, мы обернули его вокруг $ (), чтобы получить объект jQuery. моя ошибка.

Ответ №2:

Вам нужен каждый.

$('.tDiv2 span')each(function(node){ alert(node.html()); });

Однако я хотел бы отметить, что такой подход, вероятно, вызовет проблемы с доступом для пользователей программы чтения с экрана. Если вам по какой-то причине абсолютно необходимо заново изобрести кнопки, тогда используйте атрибуты ARIA, чтобы у ваших слепых посетителей была хоть какая-то надежда заставить это работать правильно.

Ответ №3:

jQuery автоматически выбирает первый элемент в ряду, если вы пытаетесь получить из него свойство, подобное html или тексту. чтобы получить второе (или любое другое число), попробуйте:

 alert($('.tDiv2 span').eq(1).html()); //returns 2nd element's html content
  

Вы можете заменить любой индекс, основанный на 0, на 1.