第一个匹配元素需要jQuery选择器

第一个匹配元素需要jQuery选择器,jquery,jquery-selectors,Jquery,Jquery Selectors,我有以下代码: <p class="expand">Click to expand</p> <div class="expand-box"> <p>Some content here</p> </div> 我的问题是:这段代码可以正常工作,但是如果扩展框不是直接在p.expand标记之后,那么它就不能工作。是否有更好的选择器可以使用而不是next(),这样当单击时,它将从单击的元素开始,沿着页面向下移动,直到找到一个

我有以下代码:

<p class="expand">Click to expand</p>
<div class="expand-box">
   <p>Some content here</p>
</div>
我的问题是:这段代码可以正常工作,但是如果扩展框不是直接在p.expand标记之后,那么它就不能工作。是否有更好的选择器可以使用而不是next(),这样当单击时,它将从单击的元素开始,沿着页面向下移动,直到找到一个扩展框,然后在第一个匹配的元素上执行动画?$this

您可以使用,如下所示:

$('.expander-box').hide();
$('.expand').toggle(function() {
   $(this).nextAll('.expander-box:first').slideDown();
}, function() {
   $(this).nextAll('.expander-box:first').slideUp();
});
$('.expander-box').hide();
$('.expand').click(function() {
   $(this).nextAll('.expander-box:first').slideToggle();
});
或者更简单,像这样:

$('.expander-box').hide();
$('.expand').toggle(function() {
   $(this).nextAll('.expander-box:first').slideDown();
}, function() {
   $(this).nextAll('.expander-box:first').slideUp();
});
$('.expander-box').hide();
$('.expand').click(function() {
   $(this).nextAll('.expander-box:first').slideToggle();
});
请注意,这两个函数都会找到下一个
.expander box
,它是一个同级,如果它是更复杂的结构,最好了解该结构并使用它导航到从
this
开始的元素,类似于现在只使用同级进行操作的方式


当然,与大多数情况一样,也有几种变化:

$(this).nextAll('.expander-box:first').slideToggle();
$(this).nextAll('.expander-box').first().slideToggle();
$(this).nextAll('.expander-box').eq(0).slideToggle();
//etc..
您可以使用和,如下所示:

$('.expander-box').hide();
$('.expand').toggle(function() {
   $(this).nextAll('.expander-box:first').slideDown();
}, function() {
   $(this).nextAll('.expander-box:first').slideUp();
});
$('.expander-box').hide();
$('.expand').click(function() {
   $(this).nextAll('.expander-box:first').slideToggle();
});
或者更简单,像这样:

$('.expander-box').hide();
$('.expand').toggle(function() {
   $(this).nextAll('.expander-box:first').slideDown();
}, function() {
   $(this).nextAll('.expander-box:first').slideUp();
});
$('.expander-box').hide();
$('.expand').click(function() {
   $(this).nextAll('.expander-box:first').slideToggle();
});
请注意,这两个函数都会找到下一个
.expander box
,它是一个同级,如果它是更复杂的结构,最好了解该结构并使用它导航到从
this
开始的元素,类似于现在只使用同级进行操作的方式


当然,与大多数情况一样,也有几种变化:

$(this).nextAll('.expander-box:first').slideToggle();
$(this).nextAll('.expander-box').first().slideToggle();
$(this).nextAll('.expander-box').eq(0).slideToggle();
//etc..

使用两个参数“根”调用jQuery构造函数在第二个参数处执行查询:

$('.expander-box',this)返回此文件的所有子级'.expander-box'。
因此,如果将HTML设置为如下所示:

<p class="expand">Click to expand
<div class="expand-box">
   <p>Some content here</p>
</div>
</p>

单击展开 这里有一些内容


上面的查询将执行您希望它执行的操作。

使用两个参数“根”调用jQuery构造函数在第二个参数处执行查询:

$('.expander-box',this)返回此文件的所有子级'.expander-box'。
因此,如果将HTML设置为如下所示:

<p class="expand">Click to expand
<div class="expand-box">
   <p>Some content here</p>
</div>
</p>

单击展开 这里有一些内容

上面的查询将执行您希望它执行的操作