第一个匹配元素需要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>
单击展开
这里有一些内容
上面的查询将执行您希望它执行的操作