选择除第一个之外的所有子元素

时间:2008-10-07 13:21:21

标签: javascript jquery

说我有以下内容:

<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>

8 个答案:

答案 0 :(得分:131)

您应该可以使用“非”和“第一个孩子”选择器。

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

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

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

答案 1 :(得分:33)

基于我对这四种方法的完全不科学的分析,看起来它们之间没有太大的速度差异。我在包含一系列不同长度的无序列表的页面上运行每个列表,并使用Firebug探查器对它们进行计时。

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

平均时间:5.322毫秒

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

平均时间:5.590毫秒

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

平均时间:6.084毫秒

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

平均时间:7.831毫秒

答案 2 :(得分:13)

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

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

答案 3 :(得分:9)

更优雅的查询(选择以li元素开头的所有li元素):

$('ul li+li')

答案 4 :(得分:3)

我会用

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

答案 5 :(得分:2)

这应该有效

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

答案 6 :(得分:1)

这是我到目前为止所做的工作

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

答案 7 :(得分:0)

使用jQuery .not()方法

$('li').not(':first').addClass('something');

OR

var firstElement = $('li').first();
$('li').not(firstElement).addClass('something');