我有一个小的jQuery选择器问题,我有以下html:
<div class="member-info first"></div>
<div class="member-info"></div>
<div class="member-info"></div>
我想隐藏(使用jQuery)所有持有“member-info”类的div,但不想隐藏“第一”类的那个div,有什么想法吗?
答案 0 :(得分:16)
$('.member-info:not(.first)').hide();
这使用not-selector
(docs)排除first
类的元素。
或者,如果first
类的目的只是识别第一个,那么请改为:
$('.member-info').slice(1).hide();
这使用slice()
(docs)方法返回从第二个匹配开始的集合。
答案 1 :(得分:3)
$(".member-info:not('.first')").hide();
$(".member-info").filter(":not('.first')").hide();
$('.member-info').not('.first').hide();
$(".member-info:not(:first)").hide();
$(".member-info").filter(":not(':first')").hide();
$('.member-info').not(':first').hide();
$(".member-info:not(:eq(0))").hide();
$(".member-info").filter(":not(':eq(0)')").hide();
$(".member-info").not(":eq(0)").hide();
$(".member-info:not(:lt(1))").hide();
$(".member-info").filter(":not(':lt(1)')").hide();
$(".member-info").not(":lt(1)").hide();
$(".member-info:gt(0)").hide();
$(".member-info").filter(':gt(0)').hide();
$(".member-info").slice(1).hide();
我想到的所有可能的方式。 我也发了JavaScript performance comparison,你可以在那里找到一些意想不到的结果。
所有这些示例都适用于jQuery的v1.10。*。
大多数情况下,这个是最快的$(".member-info").slice(1).hide();
,看起来很相关,而不是头脑风暴的答案
答案 2 :(得分:2)
这不能完全回答您的问题,但您可以使用gt。跳过第一个匹配的元素。
例如:
$('div.member-info:gt(0)')
答案 3 :(得分:2)
使用:not() selector。例如:
$(".member-info:not(first)").hide();
如果第一个真的总是第一个孩子,请尝试
$(".member-info:not(member-info:first)").hide();
答案 4 :(得分:1)
我也遇到过这个问题。但是,我没有方便地将一个名为first
的类标记为我的元素以进行排除。以下是我在此示例的上下文中用于选择器的解决方案:
$('.member-info:not(:first)');//grab all .member-info except the first match
答案 5 :(得分:0)
答案 6 :(得分:0)
$('.member-info').not('.first').hide();
答案 7 :(得分:0)
@AuthorProxy
,@David Thomas
和 @Maximilian Ehlers
都在他们的答案中提出$('.member-info').not('.first').hide();
,这是一个非常快速且非常易读的解决方案。
由于jQuery选择器的评估方式是从右向左,因此该评估实际上减慢了可读性".member-info:not(.first)"
的速度。
快速且易于阅读的解决方案确实使用功能版本.not(".first")
甚至只使用.not(":first")
:
e.g。
$(".member-info").not(".first").hide(); // Class selector
或
$(".member-info").not(":first").hide(); // Positional selector
相关选择器的JSPerf: http://jsperf.com/fastest-way-to-select-all-expect-the-first-one/6
.not(':first')
只比slice(1)
慢几个百分点,但是非常可读,因为&#34;除了第一个&#34;我想要所有的一切。