2011-08-16 32 views
9

Si tengo algo como esto:¿Cómo seleccionar el penúltimo (último) elemento li de la lista ul en jQuery?

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

y necesito addClass "extra" para la penúltima (por ejemplo, si tengo 5 elementos li se añadirá la clase extra para el elemento li cuarto) de la ul lista.

por lo que el resultado en este caso será:

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

Gracias de antemano

+6

Gracias por enseñarme una nueva palabra hoy, 'penultimate'. –

+1

Voy a +1 solo por penúltima. –

Respuesta

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

Puesto que todos los <li> elementos son hermanos, y no hay otro elemento entre ellos, puede usar last() seguido de prev():

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

Hubo otros elementos en el medio, que tendría que utilizar prevAll() lugar:

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

Si sólo hay una lista, sólo tiene que pasar un índice negativo para el método eq()[docs].

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

Parece que está utilizando una versión anterior de jQuery.

Here's an example que lo muestra trabajando en jQuery 1.3.2.

Cuestiones relacionadas