2011-08-16 12 views
9

私はこのようなものがある場合:jQueryのulリストから最後から2番目の要素を選択するにはどうすればよいですか?

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

を、私は最後から二番目に「余分な」addClassする必要があります(たとえば、私は5つのli要素を持っている場合、余分なクラスが第四li要素に追加されますに)ULからリスト。

ので、この場合の結果は次のようになります。事前に

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

おかげ

+6

今日、私に新しい言葉を教えてくれてありがとう、「最後から2番目の」。 –

+1

私は最後から二番目に+1するつもりです。 –

答えて

10
$("li:last").prev("li").addClass("class-to-add") 

http://api.jquery.com/prev/

http://api.jquery.com/last-selector/

+1

ありがとうございます。あなたのバージョンのみがDrupalのjQueryの私のバージョンで動作するようです。 – killingon

+2

@killingon:そのバージョンは何ですか?不明な場合は 'alert($。fn.jquery)'を実行してください。 – user113716

+0

@killingon:jQueryバージョンも知りたい –

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

すべての<li>要素が兄弟であり、それらの間に他の要素は、あなたが、ありませんので、 last()の後にprev()を使用できます。

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

は、これらの間が他の要素だったの、あなたの代わりにprevAll()を使用する必要があるだろう:

$("li").last().prevAll("li").first().addClass("extra"); 
0

次を使用することができます。

$('li').eq($('ul li').length - 2); 

JS Fiddle demo

参考文献:

1
$('li').eq($('li').length-2).addClass("extra") 
5

唯一つのリストがある場合、単にeq()[docs]方法に負のインデックスを渡します。

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

古いバージョンのjQueryを使用しているようです。

Here's an exampleこれはjQuery 1.3.2で動作していることを示しています。

関連する問題