2009-04-01 14 views
1

たとえば、私はidを持つdivを持っています( "the_div"と言うことができます)。このdivには順序付けられていないリストがあり、このリストには5つの項目があります。Jquery - x番目の要素を取得

3番目のリストアイテムにクラスを追加するにはどうすればいいですか?リストアイテムにはクラスが追加されていません。

編集:それでも、リスト項目のテキストをどのような番号要素に変更するとよいでしょうか?

ありがとうございました。

答えて

2

あなたの最初の問題のために、あなたは0ベースとeqを、使用することができます。

$('ul li', '#thediv').eq(2).addClass('whatever'); // add class to 3rd item 

をあなたの第二の問題について、あなたはすべてのリスト項目を反復処理するためにeachを使用することができます。コールバック関数は、セット内の現在の要素のインデックスを含む引数を渡す:

$('ul li', '#thediv').each(function(i) { 
    $(this).text(i); // update each list item with its index, 0 based. 
}); 
+0

を好む場合私は.text(i)ではなく.html(i)と言うでしょう。 +1。 – strager

+0

さて、jQueryは明らかにそれを理解していますが、ポイントを取っています。編集されました。 –

+0

Mmm。ドキュメントを読むと、html()とtext()の唯一の違いは、text()がHTMLをエスケープすることです。明らかにここでは関係ありません。 1つまたは他のものをいつ使用するかについての「ベストプラクティス」がありますか?私はhtml()がおそらくdivsのためであると感じていますが、これはまさにちょっとしたことです。 –

4

それとも...

$('#the_div ul li:eq(2)').addClass('className'); 

あなたはセレクタを一緒に組み合わせることができます - あなたは:)

+0

私はそれが純粋に好みの問題だと思います。私はそれらの長いセレクタ・ストリングが見苦しいと判断し、それらを分離することはインテントをより明確に示し、より速くなります。 –

+0

Preference yep ..私は彼らが一般的にCSSと幾分似ていることがわかるので、一貫性が好きです。;) – markt

+0

+1、私はこの解決策がはるかにいいと思います。少ないノイズ。 – cdmckay

関連する問題