2009-08-10 10 views
19

Je souhaite appliquer une classe spéciale aux deux derniers éléments de la liste dans une liste non ordonnée avec jQuery. Comme ceci:jQuery: Obtenir les deux derniers éléments de la liste?

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

Comment? Dois-je utiliser: eq en quelque sorte?

Merci à l'avance

Pontus

Répondre

23

Une autre approche, en utilisant andSelf et prev:

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

Merci! Cela a fonctionné magnifiquement! – ponjoh

+0

@ponjoh: De rien! – CMS

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

alternative: items.slice (items.length - 2) .addClass ('spécial') – Marc

+0

Ajouter comme une réponse: P –

+0

Merci beaucoup, mais qu'est-ce que je puis faire avec la variable "last_two"? – ponjoh

3
$(function(){ 

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

}); 
42

Vous pouvez utiliser la fonction slice. C'est très flexible.

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

+1 pour la solution native –

+1

et le plus court :) – vkostromin

+2

Je ne considérerais pas ce "natif". – ricka

Questions connexes