jquery、id内のクラスのセレクター


91

以下では、要素my_class内のクラスを含む要素をどのように選択する必要がありますid = "my_id"か?

要素には別のクラスも含まれる可能性があることに注意してください。

<div id = "my_id">
    <span class = "my_class hidden">hi</span>
    <span class = "my_class">hello</span>
</div>

しようとしていました

$("#my_id [class*=my_class ]")

回答:


150

子孫セレクターと一緒にクラスセレクターを使用できます

$("#my_id .my_class")

これを:firstと組み合わせることができますか(#my_id内のそのクラスの最初の要素を取得するため)?
jakob.j 2014

1
@ jakob.j$("#my_id .my_class:first")
アルンPジョニー

idがクラス内で定義されている場合、$( "。my_class #my_id")のように、idと同じものをクラスに使用できますか
dhS

48

プレーンなol 'クラスセレクターを使用するだけです。

$('#my_id .my_class')

要素が他のクラスも持っているかどうかは関係ありません。それは持ってい.my_classクラスを、そしてそれは内部のどこかだ#my_idそれはそのセレクタにマッチしますので、。

パフォーマンスについて

jQueryセレクターのパフォーマンスドキュメントによると、次のように2つのセレクターを個別に使用する方が高速です。

$('#my_id').find('.my_class')

ドキュメントの関連部分は次のとおりです。

IDベースのセレクター

// Fast:
$( "#container div.robotarm" );

// Super-fast:
$( "#container" ).find( "div.robotarm" );

.find()IDのみの選択を使用して処理された-最初の選択は、シズルセレクタエンジンを経由せずに処理されるためのアプローチは高速であるdocument.getElementById()ことがブラウザにネイティブであるため、非常に高速です。

IDまたはクラスのみ(特に)で選択するとブラウザーが提供する関数が呼び出されますが、document.getElementById()これは非常に高速ですが、子孫セレクターを使用すると、Sizzleエンジンが呼び出されます。



1

私はあなたが<span class = "my_class">hello</span>この要素だけを選択することを望んでいると思います、あなたはこれが好きです、私があなたの質問を正しく理解しているならこれが答えです、

$("#my_id [class='my_class']").addClass('test');

DEMO


$("#my_id .my_class")短い方の同等物です。この場合、属性セレクターを使用しても何も得られません。
doppelgreener 2015年

私もあなたの答えと同じ仕事をしたことを願っていますが、あなたが答えた質問に答えている間、私は答えをしたので質問を削除していないことに気づきませんでした。
ティルマライムルガン2015年

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