jQuery选择器-除第一个之外的所有

jQuery选择器-除第一个之外的所有,jquery,jquery-selectors,Jquery,Jquery Selectors,我有一个小的jQuery选择器问题,我有以下html: <div class="member-info first"></div> <div class="member-info"></div> <div class="member-info"></div> 我想隐藏(使用jQuery)所有包含“memberinfo”类的div,但不包含包含“first”类的div,有什么想法吗 $('.member-info:not

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

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

我想隐藏(使用jQuery)所有包含“memberinfo”类的div,但不包含包含“first”类的div,有什么想法吗

$('.member-info:not(.first)').hide();
这将使用排除具有
第一个
类的元素

或者,如果
first
类的目的只是识别第一个,则改为:

$('.member-info').slice(1).hide();

这使用方法返回一个从第二个匹配开始的集合。

这并不能完全回答您的问题,但是您可以使用gt跳过第一个匹配的元素

例如:

$('div.member-info:gt(0)')
$(".member-info:not(first)").hide();
请参阅:

这应该可以:

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

使用。例如:

$('div.member-info:gt(0)')
$(".member-info:not(first)").hide();
如果first真的总是第一个孩子,试试看

$(".member-info:not(member-info:first)").hide();

$('.member info')。而不是('.first')。hide()怎么样

我也遇到了这个问题。然而,我并没有一个名为
first
的类来标记我的元素以进行排除。以下是我在本例中用于选择器的解决方案:

$('.member-info:not(:first)');//grab all .member-info except the first match
我想到的所有可能的方法。 我还做了一些你可以发现一些意想不到的结果

所有这些示例都使用jQuery的v1.10.*版本


大多数情况下,这是最快的
$(“.member info”).slice(1.hide()
和看起来相关的,而不是头脑风暴的答案

@AuthorProxy
@David Thomas
@Maximilian Ehlers
都建议
$('.member info')。而不是('.first').hide()在他们的答案中,这是一个非常快速、可读性非常强的解决方案

由于jQuery选择器是从右到左求值的,因此相当可读的
“.member info:not(.first)”
实际上会因为求值而变慢

一个快速且易于阅读的解决方案实际上是使用函数版本
。而不是(“.first”)
,甚至只是
。而不是(“:first”)

e、 g

JSPerf相关选择器:


.not(“:first”)
只比
slice(1)
慢几个百分点,但可读性很强,因为“除了第一个之外,我想要所有的”。

+1 slice()会快得多,因为它只是从数组中删除一个元素,而不是让jquery再次检查每个元素上的类。@Keltex:我同意。只要
first
类始终在集合中的第一个匹配项上,就可以进行切片。@Keltex是真的,但是应该选择更清晰的类,因为类的选择可能不会产生任何明显的影响。(和以往一样,与性能、前后简介相关)谢谢@Jon-这一次帮了我不少忙。不知道为什么其他人不是。可能是或的重复。无论哪种方式,将第一个元素的类命名为“first”都会让人特别困惑。所以答案包括
':not(:first)
':not(.first)
甚至
':not(first)
$(".member-info").not(":first").hide();   // Positional selector