jQuery选择器 - 除了第一个

时间:2011-01-28 17:42:02

标签: jquery jquery-selectors

我有一个小的jQuery选择器问题,我有以下html:

<div class="member-info first"></div>
<div class="member-info"></div>
<div class="member-info"></div>

我想隐藏(使用jQuery)所有持有“member-info”类的div,但不想隐藏“第一”类的那个div,有什么想法吗?

8 个答案:

答案 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)')

请参阅:http://api.jquery.com/gt-selector/

答案 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)

这应该有效:

$('.member-info').not('.first').hide();

使用not()

答案 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;我想要所有的一切。