我试图使用jQuery的next()
来抓取所选元素的下一段,但因为有一个div挡道,似乎next无法工作。我应该使用哪个选择器呢?
作品:
<div>
<span class="clickme">A name here</span>
<p class="showme" style="display:none;">Here's some text! </p>
</div>
$('.clickme').click(function() {
$(this).next('.showme').slideDown();
});
不工作:
<div>
<span class="clickme">A name here</span>
<div></div>
<p class="showme" style="display:none;">Here's some text! </p>
</div>
$('.clickme').click(function() {
$(this).next('.showme').slideDown();
});
为什么会发生这种情况?具有指定类的next()
不会超出下一个块元素吗?所以才会发生这种事吗是否有一个选择器指定应该选择showme
的“下一个”类?
小提琴-http://jsfiddle.net/QespX/
2条答案
按热度按时间yqlxgs2m1#
.next()
:获取匹配元素集合中每个元素的紧接着的兄弟元素。如果提供了一个选择器,则仅当下一个同级与该选择器匹配时,它才会检索该同级。.nextAll()
:获取匹配元素集合中每个元素的所有后续兄弟元素,可选地通过选择器过滤。你就这么走了
关于Tree Traversal的更多信息可以在jQuery API文档中找到。
ao218c7q2#
可以使用
.nextAll()
:Demo:http://jsfiddle.net/QespX/1/
之所以这样做是因为
.showme
是.clickme
的兄弟。.nextAll()
将选择您单击的元素之后的所有.showMe
元素,但由于您只有一个,因此它可以工作。如果这是一个问题,您可以使用
.first()
来缩小结果范围: