2011-01-11 53 views
11

我遇到麻煩使用:與類名可見。計數可見的div與類名jquery

例:

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

如果我要算應該輸出2類 「1級」

$(".level1 :visible").length;給我輸出3,犯規此可見的div的#?

$(".level1 :visible").parent().length;給我輸出2這是正確的

我已創建http://jsfiddle.net/metalhawk/P87jS/

這個例子中的任何建議是有益的。謝謝

回答

34

$(".level1 :visible")是後代選擇器:您選擇的所有可見元素是後代.level1。在.level1元素下面有三個div元素。

使用這個代替:

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

See your fiddle per my update

+0

@lonesomeday,任何方式這個更新,而隱藏的div在頁面上/節目?喜歡生活?它在頁面加載時效果很好,但是對於div被刪除的排序/搜索,可以通過任何方式改變它? – Collarbone 2015-06-04 03:50:43

+0

@JamisonHill每當你運行它,它會給出當前的數字。每次更改後都需要再次運行選擇器。可能有更優雅的方法來做到這一點,但是如果不仔細查看代碼,很難說。 – lonesomeday 2015-06-04 15:20:25

4

敢肯定你需要做的$(".level1:visible").length;

空間更是打破了代碼