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>

这可能吗?

Answers:


145

在这种情况下,您需要转到<tr> 然后 use .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 2012年

2
@StuR-在这里不起作用,因为.nextAll()仅查看同级元素。您需要一些可以查看后代的东西,以查找问题想要的下一个<div>。
尼克·克拉弗

1
如果要从返回的HTMLObject获取属性怎么办?像是$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga 2014年

如果元素没有兄弟姐妹,则可能还需要使用:.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将返回所有元素。
Shashwat库马尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.