最初の要素を除くすべての子要素を選択します


81

私が持っているとしましょう:

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

回答:


136

「not」および「firstchild」セレクターを使用できるはずです。

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

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

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


私はこれを試しました:$( '。certificateListinput:checkbox:not(:first-child)')しかし、それは機能しませんでした....
Chris Canal

これは、以下にリストされているスライス方法よりも遅くなりますか?
Chris Marasti-Georg

36

ここでの4つの方法の完全に非科学的な分析に基づくと、それらの間に速度の違いはあまりないようです。さまざまな長さの一連の順序付けられていないリストを含むページでそれぞれを実行し、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


3
私はこの質問に出くわしました。なぜなら、最初の子供以外のすべての子供を取得する必要があったからです。私はdivにあったすべてのh3でこれを行っていました。上記のように私のページで3つのクエリを実行し、:not(:first-child)が2〜3倍最速であると判断しました。あなたのページが構造化されている方法は、プロファイルの速度にも影響を与える可能性があると思います。いずれにせよ、この回答はFirebugプロファイラーの使用方法を教えてくれましたが、ありがとうございます。
RedWolves 2009年



3

私は使用します

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

2

これはうまくいくはずです

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

1

これは私がこれまで取り組んできたものです

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

0

jQuery .not()メソッドを使用する

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

または

var firstElement = $('li').first();
$('li').not(firstElement).addClass('something');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.