2009-08-11 1 views
16

Ho una lista di elementi che voglio modellare in 3 modi diversi.addClass ogni n.

Voglio che ogni terzo elemento dell'elenco abbia la stessa classe nell'intera lista.

Ad esempio:

<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> 

posso fare 2 con: pari/dispari, ma come farlo con 3?

risposta

45

provare

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

Sentitevi liberi di consolidamento per renderla più bella, ma ho voluto esporre i selettori.

+2

Per rendere questa una soluzione funzionante usare: $ ('ul li: nth -child (3n) '). addClass (' ogni-terzo-articolo-classe '); – shuckster

+0

@brownstone - vedi la modifica, l'ho modificato per rispondere alla sua preoccupazione totale (anche se longhanded) – Marc

+1

Grazie Marc. Questo era esattamente quello che io – davebowker

2

vi consiglio qualcosa di simile:

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

questo non funziona ... cancella la prima riga e aggiungi la "i" in .... ognuna (funzione (i) .... – ggzone