2010-07-25 13 views
2

J'essaie de comprendre comment je peux compter le nombre de div à l'intérieur du conteneur "bar" puis ajouter le nombre en tant que classe. Par exemple, dans le premier élément class = « 3 bar » et la deuxième class = « bar 2 »compter le nombre de div dans chaque conteneur avec jquery

<div class="item"> 
    <div class="foo"></div> 
    <div class="bar"> 
    <div class="slide"></div> 
    <div class="slide"></div> 
    <div class="slide"></div> 
    </div> 
</div><!-- /item --> 

<div class="item"> 
    <div class="foo"></div> 
    <div class="bar"> 
    <div class="slide"></div> 
    <div class="slide"></div> 
    </div> 
</div><!-- /item --> 
+0

Juste une note - si vous prévoyez d'utiliser le numéro dans la classe de style le conteneur, il ne fonctionnera pas . Les noms de classe CSS ne peuvent pas être (ou commencer avec) des nombres. – Pat

+0

Que je suis conscient de. C'est juste du code simplifié. – Alex

Répondre

2
$('#item').each(function(i, elem){ 
    var $this = $(this), 
     len = $(this).find('.bar').children('div').length; 

    $this.addClass('bar ' + len); 
}); 

Alors que j'ai réalisé ce ecriture que vous utilisez plusieurs IDs avec le nom item. Ce n'est pas HTML markup valide et jQuery ne retournera probablement que la première occurrence. Remplacez l'ID par des classes et utilisez $('.item').

1
$.each($(".item"), function(i, d) { 
    var count = $(d).find(".bar div").length; 
    $(d).addClass("bar_" + count); 
}) 
+0

non '.count()' dans jQuery. Utilisez la propriété '.size()' ou directement '.length'. – jAndy

+0

oups, juste réparé. –

0

Dans jQuery 1.4, vous pouvez utiliser une fonction comme argument .addClass():

$('.bar').addClass(function() { 
    return $(this).children('div').length; 
}); 
Questions connexes