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


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

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

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

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

3 79

3 ответа:

в этом случае вам нужно подняться до <tr>затем использовать .next(), например:

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

или если могут быть строки между ними без .class внутри, вы можете использовать .nextAll(), например:

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

вы не можете использовать next () в этом сценарии, если вы посмотрите на документация он говорит:
следующий() получаемсразу после брата каждого элементав наборе совпавших элементов. Если селектор предоставлен, он извлекает следующий брат, соответствующий селектору.

так что если второй DIV был в том же TD, то вы могли бы кодировать:


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

Но так как это нет, я не вижу смысла использовать next(). Вы можете вместо кода:

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

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

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