jQuery选择除第一个之外的所有
在jQuery中,如何使用选择器访问除第一个元素外的所有元素?因此,在下面的代码中,只访问第二个和第三个元素。我知道我可以手动访问它们,但可能有任意数量的元素,所以这是不可能的。谢谢jQuery选择除第一个之外的所有,jquery,jquery-selectors,Jquery,Jquery Selectors,在jQuery中,如何使用选择器访问除第一个元素外的所有元素?因此,在下面的代码中,只访问第二个和第三个元素。我知道我可以手动访问它们,但可能有任意数量的元素,所以这是不可能的。谢谢 <div class='test'></div> <div class='test'></div> <div class='test'></div> 或: 或: 或: 或者:(根据@Jordan Lev的评论): 等等 见: 由
<div class='test'></div>
<div class='test'></div>
<div class='test'></div>
或:
或:
或:
或者:(根据@Jordan Lev的评论):
等等
见:
li:not(:first)
会因为求值而变慢
同样快速且易于阅读的解决方案是使用函数版本。而不是(“:first”)
:
e、 g
JSPerf:
这只比
切片(1)
慢几个百分点,但可读性很强,因为“我想要除第一个之外的所有内容”。我的答案集中在一个扩展案例上,该案例源自顶部暴露的案例
假设有一组元素,要从中隐藏除第一个元素以外的子元素。例如:
<html>
<div class='some-group'>
<div class='child child-0'>visible#1</div>
<div class='child child-1'>xx</div>
<div class='child child-2'>yy</div>
</div>
<div class='some-group'>
<div class='child child-0'>visible#2</div>
<div class='child child-1'>aa</div>
<div class='child child-2'>bb</div>
</div>
</html>
$(文档).ready(函数(){
$(“.btn1”)。单击(函数(){
$(“div.test:not(:first)”).hide();
});
$(“.btn2”)。单击(函数(){
$(“div.test”).show();
$(“div.test:not(:first):not(:last)”).hide();
});
$(“.btn3”)。单击(函数(){
$(“div.test”).hide();
$(“div.test:not(:first):not(:last)”).show();
});
});代码>
隐藏除第一个以外的所有
隐藏除第一个和最后一个之外的所有
先藏后藏
弗斯特
第二
第三
最后
这里是一个比较所有这些解决方案的JsPerf:根据项目的数量,$(“li”)。而不是(“:eq(0)”)
看起来不错。喜欢这个列表。只想添加:$(“div.test:first”).sides().hide()
。我发现从第一个元素开始,然后隐藏它的所有同级元素非常有用,即使它们没有使用公共选择器找到。很棒的列表!只是一个小评论;我认为gt不再是JQuery函数,至少在我使用的版本中不是。我得到一个类型错误:.gt不是函数。$(“div.test”).slice(1.hide()代码>在选择为空的情况下看起来最宽容…@SandyGifford这不包括不在测试类中的兄弟姐妹吗?错过了不是兄弟姐妹的测试类元素吗?看看这个答案,这也是我最喜欢的答案,我发现它非常清晰易读。其意图是明确无误的。
$("div.test:not(:eq(0))").hide();
$("div.test").not(":eq(0)").hide();
$("div.test:gt(0)").hide();
$("div.test").slice(1).hide();
$("li").not(":first").hide();
<html>
<div class='some-group'>
<div class='child child-0'>visible#1</div>
<div class='child child-1'>xx</div>
<div class='child child-2'>yy</div>
</div>
<div class='some-group'>
<div class='child child-0'>visible#2</div>
<div class='child child-1'>aa</div>
<div class='child child-2'>bb</div>
</div>
</html>
$('.child:not(:first)').hide();
$('.some-group').each(function(i,group){
$(group).find('.child:not(:first)').hide();
});