2011-01-11 16 views
11

Ich habe Probleme mit der Verwendung: sichtbar mit Klassennamen.Zählen sichtbare Divs mit Klassenname 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> 

Wenn ich die Anzahl der sichtbaren divs der Klasse "ebenen1"

$(".level1 :visible").length; gibt mir Ausgabe 3, tut dies sollte Ausgang 2 zählen möchten?

$(".level1 :visible").parent().length; gibt mir Ausgabe 2, die

korrekt ist ich dieses Beispiel bei http://jsfiddle.net/metalhawk/P87jS/ erstellt haben

Alle Vorschläge sind hilfreich. Danke

Antwort

34

$(".level1 :visible") ist ein Nachfahren-Selektor: Sie selektieren alle sichtbaren Elemente, die Nachkommen von .level1 sind. Es gibt drei div Elemente, die unter .level1 Elemente sichtbar sind.

Verwenden Sie stattdessen:

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

See your fiddle per my update.

+0

@lonesomeday, jede mögliche Weise dafür tun, um zu aktualisieren, während divs auf der Seite/show verbergen? Wie leben? Es funktioniert hervorragend beim Laden von Seiten, aber für eine Sortierung/Suche, bei der divs entfernt werden, gibt es eine Möglichkeit, dies zu ändern. – Collarbone

+0

@JamisonHill Wenn Sie es ausführen, wird die aktuelle Nummer angezeigt. Sie müssen den Selektor nach jeder Änderung erneut ausführen. Es mag elegantere Wege geben, dies zu tun, aber es ist schwer zu sagen, ohne den Code genauer zu betrachten. – lonesomeday

+0

@lonesomeday - Hier ist ein JFiddle mit meinem Code. Sehr einfach, aber aktualisiert nicht mit der Suche: http://jsfiddle.net/KYjfk/10/ Lassen Sie mich wissen, was Sie denken. – Collarbone

4

Ziemlich sicher, benötigen Sie $(".level1:visible").length;

der Raum bricht den Code

+0

Ahh ... Danke dpmguise. – metalhawk