2009-08-10 17 views
19

Quiero aplicar una clase especial a los dos últimos elementos de la lista en una lista desordenada con jQuery. De esta manera:jQuery: ¿Obtiene los dos últimos elementos de la lista?

<ul> 
<li>Lorem</li> 
<li>ipsum</li> 
<li>dolor</li> 
<li class="special">sit</li> 
<li class="special">amet</li> 
</ul> 

Cómo? ¿Debería usar: eq de alguna manera?

Gracias de antemano

Ponto

Respuesta

23

Otro enfoque, utilizando andSelf y prev:

$('ul li:last-child').prev('li').andSelf().addClass("special"); 
+0

¡Gracias! ¡Eso funcionó maravillosamente! – ponjoh

+0

@ponjoh: ¡De nada! – CMS

5
var items = $('ul li') 
var last_two = items.filter('li:gt('+ items.length-3 +')') 
last_two.addClass('special'); 
+0

alternativamente: items.slice (items.length - 2) .addClass ('especial') – Marc

+0

Agregar una respuesta: P –

+0

Muchas gracias, pero lo que puedo hacer entonces con la variable "last_two"? – ponjoh

3
$(function(){ 

    $("li:gt("+($("li").length-3)+")").addClass("special"); 

}); 
42

puede utilizar la función slice. Es muy flexible

$('ul li').slice(-2).addClass("special"); 
+1

+1 para la solución nativa –

+1

y la más corta :) – vkostromin

+2

No consideraría esto "nativo". – ricka

Cuestiones relacionadas