2010-04-11 8 views
1

J'ai plusieurs listes avec la même classe. Je voudrais boucler chaque liste et ses LI et préfixer le nombre actuel avant chaque. Le code actuel que j'ai est:Fonction jQuery .each(). Réinitialiser l'index?

$jQuery(".numberList li").each(function(i) { 

    var index = i + 1; 

    $jQuery(this).prepend("<span>" + index + "</span>"); 

}); 

Le problème est que l'indice ne redémarre pas de retour à 0 pour chaque liste, il passe, il ne cesse d'augmenter. Par exemple, la sortie que je reçois est maintenant:

First list 
1. item 
2. item 
3. item 

Second list 
4. item 
5. item 
6. item 

deuxième liste devrait commencer à 1 à nouveau en ayant l'indice de retour à 0.

Quelqu'un pourrait-il indiquer où je vais mal? Je ne suis pas un expert jQuery ou quoi que ce soit ... clairement :)

Merci beaucoup, Michael.

+0

Dupliquer de: http://stackoverflow.com/questions/2615758/using-each-method-how-do-i-get-the-indexes-of-multiple-ordered-lists-to-each – interjay

+0

Merci pour le lien. J'ai fait une recherche, mais je n'ai pas pu trouver les bons termes pour obtenir un bon résultat. À votre santé. – Michael

Répondre

3

Je penserais à des boucles d'imbrication.

Quelque chose comme:

$('.numberList').each(function(){ 
    $this.children('li').each(function(i){ 
     var index = i + 1; 
     $jQuery(this).prepend("<span>" + index + "</span>"); 
    }); 
}); 
3

Pourquoi ne pas utiliser seulement les feuilles de style?

.numberList { 
    list-style-type: decimal; 
} 

Vous pouvez appliquer ce style par jQuery si pour une raison quelconque, il doit être fait dynamiquement:

$(".numberList").css("list-style-type", "decimal");​ 

Un example here.

+0

C'est beaucoup mieux à mon humble avis. – Raja