2011-08-16 11 views
9

Jeśli mam coś takiego:Jak wybrać przedostatni (ostatni, ale jeden) element li z listy ul w jQuery?

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

i muszę addClass „ekstra” z przedostatniego (np jeśli mam 5 elementów li dodatkowa klasa zostaną dodane do 4-ej strefy Li) od ul lista.

więc wynik w tym przypadku będzie:

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

góry dzięki

+6

Dzięki za nauczanie mnie nowego słowa dzisiaj, "przedostatniego". –

+1

Zamierzam dawać +1 tylko za przedostatnie. –

Odpowiedz

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

Ponieważ wszystkie elementy <li> są rodzeństwem, a nie ma innego elementu między nimi, ty można użyć last(), a następnie prev():

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

Czy istnieją inne elementy, w międzyczasie, trzeba by użyć prevAll() zamiast:

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

Jeśli istnieje tylko jedna lista, po prostu przekazać negatywny indeks metody eq()[docs].

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

Wygląda na to, że używasz starszej wersji jQuery.

Here's an example który pokazuje, że działa w jQuery 1.3.2.

Powiązane problemy