0

繰り返しネストされた要素構造が与えられた場合、次に例を示します。

<div class="A">

  <span class="B></span>
  <span class="B></span>

  <span class="B">
     <div class="A">
        <span class="B"></span>
     </div class="A">
  </span>

</div>

ルート要素<span class="B"></span>の直接の子である最後のものを選択するにはどうすればよいですか?<div class="A"></div>

私は疲れました:

div.A > class.B

...しかし(正しく)これは、ルート要素の直接の子ではない最後の要素にも一致し<div class="A"></div>ます。

4

2 に答える 2

1

ネスト検索を簡単にするために、いくつかの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();

于 2012-04-12T19:54:59.287 に答える
0

jQueryには:lastセレクターがあります。どのオブジェクトを選択しようとしているのかは、まだ完全にはわかりません。

<span class="B"></span>ルートの直接の子である最後のものが必要な場合<div class="A">は、次のオプションがあります。

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");
于 2012-04-12T20:01:31.433 に答える