jquery选择器-排除第一个和第二个

jquery选择器-排除第一个和第二个,jquery,jquery-selectors,Jquery,Jquery Selectors,我想从jquery选择器中排除第一个和第二个元素。我试过这个: $('p:not(:nth-child(1),:nth-child(2))') 但这只排除了第一个元素。。。谢谢 $('p').not(":nth-child(1)").not(":nth-child(2)") 此jQuery序列用于放弃$('p')选择器中的前两个元素: $('p').slice(2). 看 请注意,这与第n个子元素不同-排除基于在第一个选择器中找到的整个元素集,而不是它们在DOM中的相对位置。简单地说:

我想从jquery选择器中排除第一个和第二个元素。我试过这个:

$('p:not(:nth-child(1),:nth-child(2))')
但这只排除了第一个元素。。。谢谢

 $('p').not(":nth-child(1)").not(":nth-child(2)")

此jQuery序列用于放弃
$('p')
选择器中的前两个元素:

$('p').slice(2).

请注意,这与第n个子元素不同-排除基于在第一个选择器中找到的整个元素集,而不是它们在DOM中的相对位置。

简单地说:

$('p').not($('p').eq(0), $('p').eq(1)) 
$('p:gt(1)')

演示

正如Alnitak在评论中指出的,如果性能是一个问题,您可以使用他的
slice

非常感谢@Alnitak指出这一点:)

试试:

$('p:not(:nth-child(1)),p:not(:nth-child(2))')
参考:

根据该参考:
“否定伪类::not(X)是一种函数表示法,它将一个简单选择器(不包括否定伪类本身)作为参数…”“

是的,这是可行的,但效率低于
.slice()
,因为伪选择器将阻止使用本机
queryselectoral()
函数。是的,如果可以,最好避免调用sizzle选择器解析器。错误地。。。我使用了
.slice()
,它确实返回jQuery选择器。在大多数情况下,简洁性/简单性胜过效率。这是其中之一。我更喜欢这种解决方案。感谢这与CSS相关,但与jQuery无关;jQuery版本的
:not()
选择器允许任何任意复杂选择器的逗号分隔列表,在jQuery字符串中编写CSS有效版本的唯一原因是为了性能(请参阅关于
querySelectorAll()
的其他答案之一上的注释)。我将很快发布一个问题,详细说明这一差异……如果您真的想编写CSS有效版本,它应该是
p:not(:nth child(1)):not(:nth child(2))
,not
p:not(:nth child(1)),p:not(:nth child(2))
。同样,这将在我的帖子中讨论。@BoltClock:我明白了,选择器需要产生联合的否定[1,2],而不是每个[1]和[2]的否定的联合,因为后者只包括所有子项,因为[1]和[2]是互斥的。谢谢,如我所承诺的。。。如果您的第一个和第二个孩子实际上是
p
元素,那么这应该是可行的。这样的问题在提供工作标记时效果最好。