1

「コンテナ」divのグループでクラス「a2」を検索する必要があります。見つかった場合は、何もしません。不足している場合は追加します。

元のコード:

<div class="container">
  <div class="a1">
    <span class="Label">Status:</span>
    <span class="Text">Active</span>
  </div>
  <div class="a2">
    <span class="Label">Description:</span>
    <span class="Text">2</span>
  </div>   
</div>

</br>
</br>

<div class="container">
  <div class="a1">
    <span class="Label">Status:</span>
    <span class="Text">Active</span>
  </div>
</div>

</br>
</br>

<div class="container">
  <div class="a1">
    <span class="Label">Status:</span>
    <span class="Text">Active</span>
  </div>  
</div>

これが私のスクリプトです:

$('div.container').each(function(){
   if($(this).children('.a2').length == 0){  
      $('<div class="a2"><span class="Label">Description:</span><span  class="Text">0</span></div>').insertAfter('div.a1');    
      return false; 
   }      
});

ここでデモを参照してください。

問題は、スクリプトが最初の「コンテナ」に不要な「a2」div を挿入したことです。誰かが私が間違ったことを理解するのを手伝ってくれますか?

4

3 に答える 3

2
.insertAfter('div.a1');

各要素の後に要素を挿入しdiv.a1ます。あなたが望むのは、それを current に追加することですdiv.container:

.appendTo(this);

また、しないでくださいreturn false。ループ全体を停止します。if追加するかどうかは、すでにガードされています。

于 2013-01-19T21:50:47.413 に答える
1
$('div.container').filter(function(){
     return $('.a2', this).length === 0;
}).append('<div class="a2"><span class="Label">Description:</span><span class="Text">0</span></div>');

また:

$('div.container').not(":has('div.a2')")
                  .append('<div class="a2"><span class="Label">Description:</span><span class="Text">0</span></div>');

http://jsfiddle.net/xGACz/

于 2013-01-19T21:52:23.633 に答える
0

notメソッドとセレクターを使用してコンテナーをフィルター処理し、要素:hasのないコンテナーのみを取得できます。a2

$('div.container').not(':has(> .a2)').append(
  $('<div class="a2"><span class="Label">Description:</span><span  class="Text">0</span></div>')
);
于 2013-01-19T22:07:43.233 に答える