2011-08-16 17 views
9

Se ho qualcosa di simile:Come selezionare penultimo (ultimo ma uno) elemento li dalla lista ul in jQuery?

<ul> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
<li>4</li> 
<li>5</li> 
</ul> 

e ho bisogno di addClass "extra" per il penultimo (ad esempio, se ho 5 elementi li la classe in più sarà aggiunto l'elemento li 4a) dal ul elenco.

in modo che il risultato in questo caso sarà:

<ul> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
<li class="extra">4</li> 
<li>5</li> 
</ul> 

Grazie in anticipo

+6

Grazie per avermi insegnato una parola nuova oggi, 'penultima'. –

+1

Ho intenzione di fare +1 per penultimo. –

risposta

3
$("ul li").last().prev().addClass("foo"); 
0
var items = $("ul").children(); 
var penultimate = items.eq(items.length - 2); 
penultimate.addClass("extra"); 
1

Dal momento che tutti i tuoi <li> elementi sono fratelli, e non c'è nessun altro elemento tra di loro, si possibile utilizzare last() seguito da prev():

$("li").last().prev().addClass("extra"); 

c'erano altri elementi in-tra, dovreste usare prevAll() invece:

$("li").last().prevAll("li").first().addClass("extra"); 
1
$('li').eq($('li').length-2).addClass("extra") 
5

Se c'è una sola lista, solo passaggio un indice negativo al metodo eq()[docs].

$("ul li").eq(-2).addClass("extra"); 

Sembra che tu stia utilizzando una versione precedente di jQuery.

Here's an example che mostra che funziona in jQuery 1.3.2.

Problemi correlati