、とjQueryの選択の範囲を制限しますか?例えば繰り返し、ネストされた素子構造を考えると、ネストされた、繰り返し素子構造
私は疲れて:
div.A > class.B
...しかし、(正しく)これはまた、ルート<div class="A"></div>
要素の直接の子ではない最後の要素にマッチします。
、とjQueryの選択の範囲を制限しますか?例えば繰り返し、ネストされた素子構造を考えると、ネストされた、繰り返し素子構造
私は疲れて:
div.A > class.B
...しかし、(正しく)これはまた、ルート<div class="A"></div>
要素の直接の子ではない最後の要素にマッチします。
あなたは、ネストの検索を容易にするために、いくつかのID、クラス、またはデータレベルのオブジェクトを追加することができますか、あなたはこの少しハックバージョン行うことができます:
$('div.A').first().children('span.B').last();
を私はデータを追加することを示唆しているでしょうレベルを扱うレベル、ID、その他のクラス。例えば
のために、HTMLを変更します。
<div class="A" data-level="first">
<span class="B" data-level="second"></span>
<span class="B" data-level="second"></span>
<span class="B" data-level="second">
<div class="A" data-level="third">
<span class="B" data-level="fourth"></span>
</div>
</span>
</div>
とあなたのようなことを行うことができます。
$('span.B[data-level="second"]').last();
など
jQueryが:last
セレクタを持っています。あなたが選択しようとしているオブジェクトがまだ完全にはわかりません。
ルート<div class="A">
の直接の子である最後の<span class="B"></span>
をしたい場合は、これらのオプションがあります。
1)ルートに識別クラスを与える:
<div class="A root">
<span class="B></span>
<span class="B></span>
<span class="B">
<div class="A">
<span class="B"></span>
</div>
</span>
</div>
そして、このセレクタ:
A.root > .B:last
2)それを識別するために、ルートオブジェクトの親を指定します。
body > .A > .B:last
3)ルートオブジェクトを識別するためにいくつかのコードを使用します。
$(".A").filter(function() {
// filter out items that have an "A" class as a parent
return($(this).parents(".A").length == 0);
}).children(".B:last");
データ・レベルによっては、あなたが、私は ''要素のいくつかの許可既存の属性を使用しての深さを格納するためにそれを使用する必要があります意味ですか「」要素ですか?例えば、 'title'属性の中に? IDは一意でなければならないので、IDを実際に追加することはできません。 – Jack
私の編集を参照してください。あなたのhtmlはやや変形していました。私もそれを修正しました – Evan
は 'data-level'ですか? – Jack