2009-08-11 36 views
16

我有一個我想用三種不同方式設置樣式的元素列表。addClass every nth

我希望每個第三個列表項都在整個列表中具有相同的類。

例如:

<li class="A">Some Content</li> 
<li class="B">Some Content</li> 
<li class="C">Some Content</li> 
<li class="A">Some Content</li> 
<li class="B">Some Content</li> 
<li class="C">Some Content</li> 
<li class="A">Some Content</li> 
<li class="B">Some Content</li> 
<li class="C">Some Content</li> 

我可以做2:奇/偶,但如何與3做呢?

回答

45

嘗試

$("ul li:nth-child(3n+1)").addClass("A") 
$("ul li:nth-child(3n+2)").addClass("B") 
$("ul li:nth-child(3n)").addClass("C") 

隨意鞏固它,使其更漂亮,但我想揭露的選擇。

+2

爲了使這個工作解決方案使用:$('ul li:n - 'child(3n)')。addClass('every-third-item-class'); – shuckster 2009-08-11 13:30:53

+0

@brownstone - 看到編輯,我改變了它以解決他的總體關注(儘管手勢很慢) – Marc 2009-08-11 13:32:03

+1

謝謝Marc。 – davebowker 2009-08-11 13:39:58

2

我建議是這樣的:

var i = 0; 
$("li").each(function() { 
    var newClass = 'A'; 
    if (i % 3 == 1) newClass = 'B'; 
    if (i % 3 == 2) newClass = 'C'; 
    $(this).addClass(newClass); 
}); 
+2

這不起作用...刪除第一行並在....中添加「i」(函數(i).... – ggzone 2012-04-23 14:01:33