2010-10-08 12 views
31

ok heres co mam ... działa dobrze, ale szuka raczej słowa niż treści. Ja po prostu chcę to pokazać, gdy istnieje jakakolwiek zawartość ..jeśli div ma zawartość show div

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

nie sądzę trzeba HTML dla tego

wygląda na „produkt” Jak zrobić to wystarczy spojrzeć na zawartość> 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> 

to koszyk na zakupy między witrynami, więc %% panel.upc %% wywołuje coś wstawionego przez panel administracyjny. w tym przypadku, jeśli nic nie ma ... wyświetla się jako puste miejsce w kodzie (źródło przeglądania w przeglądarce).

Odpowiedz

55

Jeśli chcesz sprawdzić tekstu, można użyć metody text():

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

lub do HTML:

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

Sprawdzanie '.text()' nie jest dobrym pomysłem, na przykład: '' –

+0

@Nick Craver: opublikowałem również metodę 'html()' , tylko pomyślał, że może chcieć tylko sprawdzić tekst, a nie inne elementy :) – Sarfraz

+0

hmm to działa dla mnie Dodałem identyfikator bs do # box3 div, więc szuka wewnętrznej skrzynki. Nadal rozpoznawał białe znaki, więc pokazywał #third ... właśnie zrobiłem "> 5" zamiast 0 i to działa .... dziękuję! = D – Alex

12

Dla zaktualizowanego pytanie: Sprawdź przyciętego tekst wewnętrznej <div>, tak:

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

Poprzednia odpowiedź: Jeśli chcesz pokazać, jeśli ma nic, a następnie sprawdzanie :not() przeciwko :empty działa:

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

Jeśli chcesz sprawdzić dla jakichś eleme NTS (nie może spacje tylko), a następnie użyć :has(*), tak:

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

nie działa ... jest inny div wewnątrz, więc może to widzi jako coś? opublikuję html – Alex

+0

@Alex - absolutnie to zobaczy, jeśli chcesz sprawdzić, czy coś * innego * jest puste, będziemy potrzebować kodu HTML. –

+0

@Alex - Zaktualizowano dla zaktualizowanego pytania :) –

0

można również sprawdzić długości HTML jest wewnątrz swojej selektora:

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

Można również użyć selektora CSS3 :empty

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

Selektor :empty jest kierowana dopiero pustych elementów, bez białej przestrzeni.

Powiązane problemy