2010-02-24 6 views
4

Je veux compter la div qui a un nom de classe "items" et a un attribut "style = display: none".jQuery count div qui a un affichage: aucun attribut

<div id="skills"> 
<div class="items" style="display:none">1</div> 
<div class="items">2</div> 
<div class="items">3</div> 
<div class="items" style="display:none">4</div> 
<div class="items" style="display:none">5</div></div> 

la sortie doit être '3'.

============================================== =============

plus du problème:

<div id="skills1"> 
<div class="items" style="display:none">1</div> 
<div class="items">2</div> 
<div class="items">3</div> 
<div class="items" style="display:none">4</div> 
<div class="items" style="display:none">5</div></div> 

<div id="skills2"> 
<div class="items" style="display:none">1</div> 
<div class="items" style="display:none">2</div> 
<div class="items" style="display:none">3</div> 
<div class="items" style="display:none">4</div> 
<div class="items" style="display:none">5</div></div> 

la sortie devrait être '3' & '5'.

Répondre

16

Original:

var count = $('div.items:hidden').length; 

Nouveau:

var counts = {}; 
$('#skills1,#skills2').each(function() { 
    counts[$(this).attr('id')] = $('div.items:hidden', $(this)).length; 
} 

L'objet counts sera:

{ skills1 : 3, skills2 : 5 } 

Dernière

$('#skills1,#skills2').each(function() { 
    if ($('div.items:hidden',$(this)).length == 0) { 
     $(this).hide(); 
    } 
}); 
(?)

Ce serait encore plus facile si vous donniez aux "conteneurs" une classe à utiliser comme sélecteur. Ensuite, vous pouvez simplement remplacer #skills1,#skills2 avec le sélecteur de classe et ne pas avoir la fonction dépendante des noms des DIV, ce qui signifie qu'il ne devrait pas changer si vous ajoutez un autre conteneur, disons skills3. Vous devez juste vous assurer de donner à ce conteneur la classe correcte.

+0

merci tvanfosson! .. mais j'ai un problème un peu compliqué. comment vais-je faire cela dynamiquement? pls. voir le problème supplémentaire .. merci encore à l'avance .. – scoohh

+0

dans votre réponse: var count = $ ('div.items: hidden'). longueur; si 'count' est égal à 0 et que son identifiant parent est 'skills1' alors la div avec l'identifiant 'skills1' affichera 'none' .. – scoohh

+0

@scoohh - vous voulez masquer le DIV lorsque le nombre de les éléments cachés qu'il contient sont 0 ou lorsque le nombre d'éléments cachés est égal au nombre d'éléments? Ton dernier commentaire m'a confondu. – tvanfosson