Reputation: 6646
Need to add class dynamically (by jQuery)
<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>
my 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');
});
I have added static class on first row(means first 3 li), Need more rows same as first row You can Use jQuery Demo here http://jsfiddle.net/WfKeY/
Upvotes: 1
Views: 758
Reputation: 2113
Now that I understand the question, here is an alternative:
var $li = $('ul > li');
$li.each(function(i) {
$(this).addClass($li.eq(i%3).attr('class'));
});
Upvotes: 1
Reputation: 41533
You should be repeating the classes every 3 elements, so use 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');
});
Updated demo : http://jsfiddle.net/WfKeY/2/
Upvotes: 3