2012-07-02 17 views
6

私はこれを見回して、これについて多くの質問を見つけましたが、解決策はありません。jQuery子divが空の場合、親divを非表示にする

<div class="pricetag"> 
    <div class="price">400</div> 
</div> 

<div class="pricetag"> 
    <div class="price"></div> 
</div> 

<div class="pricetag"> 
    <div class="price">250</div> 
</div> 

私がしたいのは、.priceに何も含まれていない.pricetagを隠すことです。 これは、同じページに異なる.pricetagをたくさん作ることができますが、空白の.priceを持つものを非表示にしたいだけです。

これはjQueryで可能ですか?私は別のスクリプトをたくさん試しましたが、どれも正しく動作していませんでした。

+0

をそれぞれ '.pricetag'要素は今まで1' .price'要素を持っているのだろうか? –

+0

私はfrを挿入します。最初と最後に:.pricetag。したがって、.priceに内容がある場合は

fr.
200
: -
です。 .priceが空の場合は
fr.
です: -
Daniel

+0

しかし、あなたは決して '

fr.
200
: -
'を持っていませんか? –

答えて

17

あなたは空の.price要素は、任意のテキストノード(例えば改行文字)が含まれていないだろうと仮定し、:emptyセレクタとparent方法を使用することができます。

$(".price:empty").parent().hide(); 

ここworking exampleです。

+0

これは修正済みです!どうもありがとうございました!私はdivが空であるかどうかをチェックするためにif文を使ってみました。再度、感謝します。私はそれができるようになるとすぐにこれを答えとしてマークします:) – Daniel

+0

@DanielLundahl - 私は助けてくれると嬉しいです。 –

+0

それを行う巧みなやり方。私は ':empty'セレクタを知らなかった。 Thanks: –

1
$('.price').each(function(){ 
    if ($(this).text().length == 0) { 
    $(this).parent().hide() 
    } 
}) 
1

あなたはdiv要素が空であるかどうかを確認してから、親のdivを非表示にする.is(':empty')を使用することができますhttp://jsfiddle.net/mm4pX/1/

作業のデモ。このことができます

希望、

コード

$('.price').each(function() { 
    if $('.price').is(':empty') $(this).parent().hide() 
});​ 
+0

すべての 'を繰り返す必要はありません。価格要素。 'parent'メソッドと' hide'メソッドは、マッチしたセットのすべての要素に適用されます。 –

+0

@JamesAllardice Ahaありがとうございました ':)'私は実際に上記の記事を読んでいました。 –

0

このjqueryのコードは、それが

$(function(){ 
    $(".price").each(function(){ 
    if($(this).html()=="") 
     $(this).parent(".pricetag").hide(); 
    }); 
}); 

jsbin例でしょう。http://jsbin.com/ovagus

0

このjQueryのスクリプトを試してみてください

$(document).ready(function(e) 
{ 
    $('div.pricetag').each(function(key, value) 
    { 
     if(!$('div.price', value).html()) $(value).hide(); 
    }); 
}); 
0

:emptyセレクタは、空白が含まれている要素を選択しません。それが問題であるなら、あなたは空白の要素をトリミングすることができます

function isEmpty(element){ 
    return !$.trim(element.html()) 
} 

$(".box").each(function() { 
    var box = $(this); 
    var body = box.find(".box-body"); 

    if(isEmpty(body)) { 
    console.log("EMPTY"); 
    box.hide(); 
    } 
}); 

http://codepen.io/DanAndreasson/pen/jWpLgM

関連する問題