2008-10-07 237 views
72

所有子元素說我有以下幾點:選擇除第一

<ul> 
<li>First item</li> 
<li>Second item</li> 
<li>Third item</li> 
</ul> 

我怎麼會選擇所有使用jQuery後的第一個子元素?所以,我可以做到這樣的:

<ul> 
<li>First item</li> 
<li class="something">Second item</li> 
<li class="something">Third item</li> 
</ul> 

回答

125

您應該能夠使用「不」和「第一個孩子」選擇。

$("li:not(:first-child)").addClass("something"); 

http://docs.jquery.com/Selectors/not

http://docs.jquery.com/Selectors/firstChild

+0

我試過這個: $('。certificateList input:checkbox:not(:first-child)') 但它沒有工作.... – 2008-10-07 13:27:13

+0

這會比下面列出的Slice方法慢嗎? – 2008-10-07 13:59:51

+0

非常感謝。這對我也有幫助... – GusDeCooL 2010-10-05 07:56:08

13

http://docs.jquery.com/Traversing/slice

$("li").slice(1).addClass("something"); 
+0

這是一個很好的答案,但我覺得我選擇的答案是更明確的用法。任何新進入該項目的人都可以更快地掌握選擇器中正在執行的操作。 – 2008-10-12 01:24:33

1

這是我的工作至今

$('.certificateList input:checkbox:gt(0)') 
2

這應該工作

$('ul :not(:first-child)').addClass('something'); 
9

更ELEG螞蟻查詢(選擇由li元素前面的所有li元素):

$('ul li+li')

2

我會使用基於我在這裏的四種方法完全不科學的分析

$("li:gt(0)").addClass("something"); 
30

,它看起來就像他們之間沒有很多速度差異一樣。我在包含一系列不同長度的無序列表的頁面上運行它們,並使用Firebug分析器對它們進行計時。

$("li").slice(1).addClass("something"); 

平均時間:5.322ms

$("li:gt(0)").addClass("something"); 

平均時間:5.590ms

$("li:not(:first-child)").addClass("something"); 

平均時間:6.084ms

$("ul li+li").addClass("something"); 

平均時間:7.831ms