#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.