2011-01-11 11 views
11

Mam problem z użyciem: widocznego z nazwą klasy.liczenie widocznych elementów div z nazwą klasy jquery

Ex:

<div class="groupedDiv" id="group1"> 
    <div class="level1"> 
     Apples 
     <div class="level2"> || L2-apple </div> 
    </div> 

    <div class="level1" style="display:none;"> 
     Oranges 
     <div class="level2"> || [L2-orange] </div> 
    </div> 
</div> 

<br/> 

<div class="groupedDiv" id="group1"> 
    <div class="level1"> 
     Roses 
     <div class="level2"> || L2-rose </div> 
     <div class="level3"> l3 rose </div> 
    </div> 
</div> 

Jeśli chcę policzyć # widocznych div klasy "równej1"

$(".level1 :visible").length; daje mi moc 3, nie robi to ma wyjście 2?

$(".level1 :visible").parent().length; daje mi wyjście 2, która jest poprawna

Stworzyłem ten przykład w http://jsfiddle.net/metalhawk/P87jS/

Wszelkie sugestie są pomocne. Dzięki

Odpowiedz

34

$(".level1 :visible") jest selektorem potomnym: wybierasz wszystkie widoczne elementy, które są potomkami .level1. Istnieją trzy elementy: div, które są widoczne pod elementami .level1.

Użyj tego zamiast:

$(".level1:visible").length; 

See your fiddle per my update.

+0

@lonesomeday, każdy sposób na to, aby zaktualizować podczas div ukryć/pokazać na stronie? Jak na żywo? Działa to świetnie na ładowanie strony, ale dla sortowania/wyszukiwania, gdzie divs są usuwane, w jaki sposób uzyskać to zmienia? – Collarbone

+0

@JamisonHill Za każdym razem, gdy go uruchomisz, poda aktualny numer. Po każdej zmianie trzeba ponownie uruchomić selektor. Mogą być na to bardziej eleganckie sposoby, ale trudno powiedzieć, nie zagłębiając się w kod. – lonesomeday

+0

@lonesomeday - Oto jFiddle z moim kodem. Bardzo proste, ale nie uaktualniające wyszukiwania: http://jsfiddle.net/KYjfk/10/ Daj mi znać, co myślisz. – Collarbone

4

Całkiem na pewno trzeba zrobić $(".level1:visible").length;

Space łamie kod

+0

Ahh ... Dzięki dpmguise. – metalhawk

Powiązane problemy