2009-08-10 20 views
19

Chcę zastosować specjalną klasę do dwóch ostatnich elementów listy na nieuporządkowanej liście z jQuery. W ten sposób:jQuery: Pobieranie dwóch ostatnich elementów listy?

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

Jak? Czy powinienem użyć: eq jakoś?

góry dzięki

Pontus

Odpowiedz

23

inne podejście, wykorzystujące andSelf i prev:

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

Dziękujemy! To działało pięknie! – ponjoh

+0

@ponjoh: Nie ma za co! – CMS

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

alternatywnie: items.slice (items.length - 2) .addClass ('specjalne') – Marc

+0

Dodaj jako odpowiedź: P –

+0

Dzięki dużo, ale co ja mam wtedy zrobić ze zmienną "last_two"? – ponjoh

3
$(function(){ 

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

}); 
42

Można użyć funkcji slice. Jest bardzo elastyczny.

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

+1 dla natywnego rozwiązania –

+1

i najkrótszego :) – vkostromin

+2

Nie uważam tego "rodzimego". – ricka

Powiązane problemy