2012-07-02 31 views
6

Bu konuyla ilgili sorularımın bir kısmını buldum, ancak çözümlerin hiçbiri benim için işe yaramıyor.jQuery Çocuk div boşsa, üst divayı gizleyin

<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> 

Ne yapmak istiyorum .price şey içermiyor .pricetag gizlemek için: Ben böyle bir yapı var. Aynı sayfada farklı .pricetag'ın bir sürü olabilir ama ben sadece boş olanları gizlemek istiyorum.

Bu jQuery ile mümkün mü? Farklı scriptler denedim ama hiç düzgün çalışmadı.

+0

her '.pricetag' eleman sadece hiç biri' .price' eleman var mı: Bu bir sorun ise o zaman beyaz alanlara gelen eleman kırpabilir? –

+0

fr ekliyorum. başlangıçta ve: - her .pricetag'in sonunda. Yani .price içeriyorsa,

fr.
200
: -
. .price boş ise
fr.
:
Daniel

+0

Ancak

fr.
200
: -
', asla? –

cevap

17

herhangi bir metin düğümlerini (örneğin yeni bir satır karakteri) ihtiva asla boş .price unsurları varsayarak, :empty seçici ve parent yöntemi kullanabilirsiniz:

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

İşte working example bu.

+0

Bu düzeltildi! Çok teşekkür ederim! Ben sadece div boş olup olmadığını kontrol ifadeleri kullanarak kullanmayı denedim. Tekrar teşekkürler. Bunu en kısa sürede cevap olarak işaretleyeceğim :) – Daniel

+0

@DanielLundahl - Rica ederim, yardımcı olabilirim :) –

+0

Bunu yapmanın akıllıca yolu. “Boş” seçiciden habersizdim. Teşekkürler –

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

Sen div boşsa kontrol edip üst div gizli yapmak için .is(':empty') kullanabilirsinizhttp://jsfiddle.net/mm4pX/1/

çalışma demo. Bu yardımcı olur

Umut,

kod

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

Tüm '' üzerinde yineleme gerek yoktur.fiyat unsurları. Eşleştirilen kümedeki tüm öğeler için "ana" ve "gizle" yöntemleri uygulanır. –

+0

@JamesAllardice Aha thank-you ':)' Aslında yukarıdaki yazıyı okuyordum, havalı, şerefe! –

0

Bu jquery kod

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

jsbin örnek yapacağız: http://jsbin.com/ovagus

0

bu jQuery komut dosyası deneyin

0

:empty seçicisi, whitespaces içeriyorsa, bir öğe seçmez.

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