jquery, знайти наступний елемент за класом


102

Як я можу знайти наступний елемент за класом.

Я намагався, $(obj).next('.class');але це повертає класи лише в $(obj)батьківських. Мені потрібно взяти наступний елемент кудись у коді за назвою класу. Тому що мій код виглядає так

<table>
<tr><td><div class="class">First</div></td></tr>
<tr><td><div class="class">Second</div></td></tr>
</table>

Чи можливо це?

Відповіді:


145

В цьому випадку вам потрібно підійти до <tr> тодішнім використання .next(), як це:

$(obj).closest('tr').next().find('.class');

Або якщо між ними можуть бути рядки без .classвнутрішньої сторони, ви можете використовувати ось .nextAll()такий:

$(obj).closest('tr').nextAll(':has(.class):first').find('.class');

Це було б простіше: $ (obj) .closest ('tr'). NextAll ('. Class') [0];
StuR

2
@StuR - це не працюватиме, оскільки .nextAll () розглядає лише елементи братів. Вам потрібно щось, що дивиться на нащадків, щоб знайти наступне <div> запитання.
Нік Крейвер

1
А що, якщо хотів отримати атрибут з повернутого HTMLObject? Like an$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga

Можливо, вам також знадобиться використовувати: .parent (). Next (""), якщо в елемента немає братів і сестер
shasi kanth

@NickCraver Ви дивовижні
СВЯТИЙ ДУХ

23

Щоб знайти наступний елемент з тим самим класом:

$(".class").eq( $(".class").index( $(element) ) + 1 )

13

Ви не можете використовувати next () у цьому сценарії, якщо ви подивитесь на документацію, в якій написано:
Next () Отримайте одразу наступний провід кожного елемента в наборі відповідних елементів. Якщо селектор надається, він отримує наступний брат, який відповідає селектору.

тож якщо другий DIV був у тому самому TD, то ви можете кодувати:


// Won't work in your case
$(obj).next().filter('.class');

Але оскільки це не так, я не бачу сенсу використовувати next (). Ви можете замість цього кодувати:

$(obj).parents('table').find('.class')


6
Але як він знаходить наступний елемент. .find поверне всі елементи.
Шашват Кумар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.