2013-01-01 6 views
1

besoin d'ajouter dynamiquement la classe (par jQuery)ajouter la classe nième enfant dynamiquement

<ul> 
    <li class="green">Green</li> 
    <li class="red">red</li> 
    <li class="black">black</li> 

    <li class="">Green</li> 
    <li class="">red</li> 
    <li class="">black</li> 

    <li class="">Green</li> 
    <li class="">red</li> 
    <li class="">black</li> 

</ul> 

mon code

jQuery('ul').each(function(){ 
       jQuery(this).find('li:nth-child(1n)').addClass('green'); 
       jQuery(this).find('li:nth-child(2n)').addClass('red'); 
       jQuery(this).find('li:nth-child(3n)').addClass('black'); 
    }); 

J'ai ajouté la classe statique sur la première ligne (ce qui signifie 3 premiers li), Besoin plus de lignes mêmes que première ligne Vous pouvez utiliser jQuery Demo ici http://jsfiddle.net/WfKeY/

+0

esprit expliquant pourquoi wouldn Ne les ajoutez-vous pas à la main? – Alexander

+1

[Qu'avez-vous essayé?] (Http://whathaveyoutried.com/) –

+0

J'ai essayé, je vais ajouter mon code – ShibinRagh

Répondre

3

Vous devriez répéter les classes tous les 3 éléments, utilisez donc 3n, 3n+/-1, 3n+/-2:

jQuery('ul').each(function(){ 
    jQuery(this).find('li:nth-child(3n-2)').addClass('green'); 
    jQuery(this).find('li:nth-child(3n-1)').addClass('red'); 
    jQuery(this).find('li:nth-child(3n)').addClass('black'); 
});​ 

Mise à jour démo: http://jsfiddle.net/WfKeY/2/

+1

Intéressant Merci beaucoup ..., Excellent travail – ShibinRagh

1

maintenant que je comprends la question, voici un un LTERNATIVE:

var $li = $('ul > li'); 
$li.each(function(i) { 
    $(this).addClass($li.eq(i%3).attr('class')); 
}); 

http://jsfiddle.net/zaMUU/5/

+0

Désolé , note clone, je dois ajouter correctement le nom de la classe – ShibinRagh

+0

Vous voulez dire que vous voulez que le nom de la classe soit égal au texte? – Levi

+0

Oui mis à jour mon code – ShibinRagh