Answers:
$("div.test:not(:first)").hide();
要么:
$("div.test:not(:eq(0))").hide();
要么:
$("div.test").not(":eq(0)").hide();
要么:
$("div.test:gt(0)").hide();
或:(根据@Jordan Lev的评论):
$("div.test").slice(1).hide();
等等。
看到:
$("li").not(":eq(0)")
似乎不错。
$("div.test:first").siblings().hide()
。发现从第一个元素开始对我很有用,然后隐藏所有同级兄弟,即使没有使用公共选择器找到它们也是如此。
$("div.test").slice(1).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
每个组中的所有元素。因此,这将无济于事,因为它将隐藏所有.child
元素,除了visible#1
:
$('.child:not(:first)').hide();
解决方案(在这种扩展情况下)将是:
$('.some-group').each(function(i,group){
$(group).find('.child:not(:first)').hide();
});
$(document).ready(function(){
$(".btn1").click(function(){
$("div.test:not(:first)").hide();
});
$(".btn2").click(function(){
$("div.test").show();
$("div.test:not(:first):not(:last)").hide();
});
$(".btn3").click(function(){
$("div.test").hide();
$("div.test:not(:first):not(:last)").show();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn1">Hide All except First</button>
<button class="btn2">Hide All except First & Last</button>
<button class="btn3">Hide First & Last</button>
<br/>
<div class='test'>First</div>
<div class='test'>Second</div>
<div class='test'>Third</div>
<div class='test'>Last</div>