有用:

<div class="xpav">
    Create
</div>
<div class="apr" style="display: none;">
    sometext
</div>

<script>
$('.xpav').click(function() {
    $(this).next(".apr").slideDown("fast");
})
</script>


它没有:

<div class="xpav">
    Create
</div>
<br />
<div class="apr" style="display: none;">
    sometext
</div>

<script>
$('.xpav').click(function() {
    $(this).next(".apr").slideDown("fast");
})
</script>


为什么要破坏它?

最佳答案

.next()仅查看给定元素之后的元素,然后根据选择器检查该元素(如果提供)。在第二个示例中,由于br存在并且没有apr类,因此不会将其拾取。从API文档:


  描述:获取匹配元素集中每个元素的紧随其后的同级。如果提供了选择器,则仅当与该选择器匹配时才检索下一个同级。


您的第二个示例需要使用.nextAll()来搜索所有接下来的同级兄弟:

$('.xpav').click(function() {
    $(this).nextAll(".apr").slideDown("fast");
});


要仅拾取匹配的第一个.apr,请使用.eq(0)

$('.xpav').click(function() {
    $(this).nextAll(".apr").eq(0).slideDown("fast");
});

关于javascript - 接下来有人可以在jQuery中解释这种奇怪的行为吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5706979/

10-13 02:21