jQuery选择器-除第一个之外的所有
我有一个小的jQuery选择器问题,我有以下html: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
<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