2010-10-08 20 views
31

ok heres was ich habe ... es funktioniert gut, aber es sucht nach einem Wort eher als Inhalt. ich will es nur um zu zeigen, wenn es irgendeinen Inhalt ist ..Wenn div Inhalt hat div

$(document).ready(function(){ 
     if ($("#box3:contains('Product')").length) { 
      $('#third').show(); 
     }           
    }); 

Ich glaube nicht, müssen Sie den HTML-Code für diese

es für ‚Produkt‘ sieht, wie ich es aussehen nur für Inhalt machen> 0

<div id="first" class="tab" > 
    <div class="tabtxt"> 
     <a>DETAILS</a> 
    </div> 
</div> 
<div class="tab" id="second"> 
    <div class="tabtxt"> 
     <a>INSPIRATION</a> 
    </div> 
</div> 
<div class="tab" id="third" style="display:none"> 
    <div class="tabtxt"> 
     <a>NOTES</a> 
    </div> 
</div> 

<div class="boxholder"> 
    <div style="overflow: hidden; display:block" class="box" id="box1"> 
     <div style="padding: 10px; line-height:16px"> 
      %%Panel.ProductDescription%% 
     </div> 
    </div> 
    <div style="overflow: hidden; display:none" class="box" id="box2"> 
     <div style="padding: 10px; line-height:16px"> 
      %%Panel.ProductWarranty%% 
     </div> 
    </div> 
    <div style="overflow: hidden; display:none" class="box" id="box3"> 
     <div style="padding: 10px; line-height:16px"> 
      %%Panel.UPC%% 
     </div> 
    </div> 
</div> 

sein ein Interspire Warenkorb so die %% panel.upc %% in etwas über das Admin-Panel eingefügt aufruft. in diesem Fall, wenn es nichts gibt .. es zeigt als Leerzeichen im Code (Anzeigequelle im Browser).

Antwort

55

Wenn Sie Text überprüfen möchten, können Sie verwenden, um die text() Methode:

$(document).ready(function(){ 
    if ($("#box3").text().length > 0) { 
    $('#third').show(); 
    }           
}); 

Oder html:

$(document).ready(function(){ 
    if ($("#box3").html().length > 0) { 
    $('#third').show(); 
    }           
}); 
+0

Die Suche nach '.text()' ist hier keine gute Idee, zum Beispiel: '' –

+0

@Nick Craver: Ich habe auch die 'html()' Methode gepostet , nur gedacht, dass er nur nach Text suchen möchte, nicht nach anderen Elementen :) – Sarfraz

+0

hmm, das funktioniert für mich, ich habe eine BSID zu # box3 div hinzugefügt, so dass es nach der inneren Box sucht. es erkannte immer noch das Leerzeichen, so dass es #third ... ich habe es nur "> 5" statt 0 und es funktioniert .... danke! = D – Alex

12

Für die aktualisierte Frage: Überprüfen Sie den getrimmten Text des inneren <div>, wie folgt aus:

if ($.trim($("#box3 div").html())) { 
    $('#third').show(); 
} 

Zurück Antwort: Wenn Sie wollen, um zu zeigen, wenn es etwas hat, dann :not() Überprüfung gegen funktioniert:

if ($("#box3:not(:empty)").length) { 
    $('#third').show(); 
} 

Wenn Sie für irgendein eleme überprüfen möchten nts (nicht möglicherweise Leerzeichen nur), dann :has(*) verwenden, wie folgt aus:

if ($("#box3:has(*)").length) { 
    $('#third').show(); 
} 
+0

nein funktioniert nicht ... da ist noch ein div drin, vielleicht sieht es das als etwas? Ich werde die html – Alex

+0

@Alex veröffentlichen - absolut wird es sehen, wenn Sie überprüfen möchten, ob etwas * sonst * leer ist, werden wir die HTML benötigen. –

+0

@Alex - Aktualisiert für Ihre aktualisierte Frage :) –

0

Sie können auch für die Länge des HTML überprüfen in Ihrem Wähler:

if ($("#box3").html().length) { 
    $('#third').show(); 
}  
0

Sie können auch den CSS3-Selektor :empty

div#empty-div:empty { 
    display: none; 
} 

Die :empty Wähler nur leere Elemente nur Targeting verwenden, ohne Leerraum.