jquery, найти следующий элемент по классу


103

Как найти следующий элемент по классу.

Я пробовал, $(obj).next('.class');но это возвращает классы только в $(obj)родительском. Мне нужно взять следующий элемент в любом месте кода по имени класса. Потому что мой код выглядит как

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

Это возможно?

Ответы:


149

В этом случае вам нужно подойти к <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');
Деннис Брага

Вам также может понадобиться использовать: .parent (). Next (""), если элемент не имеет братьев и сестер
shasi kanth 04

@NickCraver Ты потрясающий
СВЯТОЙ ДУХ

23

Чтобы найти следующий элемент с тем же классом:

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

14

Вы не можете использовать 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.