说我有以下内容:
<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>
答案 0 :(得分:131)
您应该可以使用“非”和“第一个孩子”选择器。
$("li:not(:first-child)").addClass("something");
答案 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');