2016-08-05 3 views
1

.cell要素の多くは、ドキュメントの読み込み時にDOMに追加されます。それらのうちのいくつかだけが必要です。その中に<img>も作成されている場合は、それらが必要です。要素.cell内に<img>要素が作成されなかった場合は、.cell要素全体を削除します。 <img>が作成された場合は、何もしないでください。<img>を含まないDOM生成要素を削除する

どうすればいいですか?

<div class="cell"> 
    <div class="a-class"> 
     <div class="always-generated-div"></div> 
     <img> <!-- if generated ---> 
    </div> 
</div> 
jq(".cell img").each(function() { 
    if (jq(this).length > 0) { 
     console.log("Oh There You Are"); 
    } else { 
     console.log("Empty elements erased"); 
     jq(".cell").remove(); 
    } 
}); 
+2

???:これを試してみてくださいそれは常に真実です。 –

答えて

3

あなたは(この場合にも及び:not()セレクタ):has()セレクタを使用して、その子要素によって親を選択することができます。そこから、あなたはremove()です。 (0 JQ(この).LENGTH>)場合は、この条件を置くのはなぜ

$('.cell:not(:has(img))').remove(); 

Working example

+0

'not()' jQueryメソッドを使わないのはなぜですか? –

+0

':not'は親に対して働きますので、' not() 'を使うことを意味すると仮定して子を見ません。 ':has()'セレクタを使って 'not()'メソッドを使うことを意味するならば、これもうまくいくでしょう。 –

+0

それを動作させることはできません。いくつかのHTMLを追加しました。 –

1

あなたは:emptyセレクタ

を使用することができます(テキストノードを含む)子を持たないすべての要素を選択します。

jq(".cell:empty").remove() 
関連する問題