2011-01-11 2 views
11

У меня возникли проблемы с использованием: visible с именем класса.подсчет видимых divs с именем класса 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> 

Если я хочу, чтобы подсчитать # видимых дивы класса "level1"

$(".level1 :visible").length; дает мне выход 3, Doesnt это предполагается выход 2?

$(".level1 :visible").parent().length; дает мне выход 2, который является правильным

Я создал этот пример в http://jsfiddle.net/metalhawk/P87jS/

Любые предложения полезны. Спасибо

ответ

34

$(".level1 :visible") - селектор потомков: вы выбираете все видимые элементы, которые являются потомками .level1. Есть три элемента div, которые видны под .level1 элементами.

Используйте вместо этого:

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

See your fiddle per my update.

+0

@lonesomeday, Любой путь для этого, чтобы обновить в то время как дивы скрыть/показать на странице? Как жить? Он отлично работает при загрузке страницы, но для сортировки/поиска, где удаляются divs, каким-либо образом получить это изменение? – Collarbone

+0

@JamisonHill Всякий раз, когда вы запускаете его, он выдаст текущий номер. После каждого изменения вам нужно будет запустить селектор. Могут быть более элегантные способы сделать это, но трудно сказать, не углубляясь в свой код. – lonesomeday

+0

@lonesomeday - Здесь jFiddle с моим кодом. Очень просто, но не обновляется с поиском: http://jsfiddle.net/KYjfk/10/. Дайте мне знать, что вы думаете. – Collarbone

4

Довольно уверен, что вам нужно сделать $(".level1:visible").length;

Спейс ломает код

+0

Ahh ... Спасибо dpmguise. – metalhawk

Смежные вопросы