2012-04-27 6 views
4

jQuery:eq(index)セレクタを動的に使用したいと思います。つまり、インデックスとして変数を指定し、対応する要素を動的に選択する必要があります。しかし、それは動作しないようです。私はそれが引用符のためだと思う。このセレクタは、たとえば$( 'ul li:eq(3)')として使用されるため、変数をインデックスとして指定すると、インデックスは変数の代わりにセレクタの文字列の一部として表示される可能性があります。そうですか?これを修正して要素を動的に選択するにはどうすればよいですか?jQuery:eq(index)セレクタ

答えて

6
var index = 5; 

あなたの例では次のように動作します。

$('ul li:eq(' + index + ')') 

しかし、最近のブラウザでのパフォーマンスを向上させるため、使用:

$('ul li').eq(index) 

もう一つの理由.eq():eq()はあなたが最後の要素を取得するために '.EQを(-1)' 渡すことができているよりも優れています。

出典:http://api.jquery.com/eq-selector/

3

あなたの疑惑は正しいです。文字列内の変数名は、変数名ではなく文字列の一部として扱われます。文字列連結を使用して、変数が変数であることをJavascriptに知らせたいとします。それは次のようになります。

$('ul li:eq(' + myVar + ')') 

さて、myVarはない文字列の一部として、変数として認識されています。

+0

Thxを、男。もう1つの質問ですが、正しい要素を選択すると、どうやって火かき棒でチェックできますか? jQueryセレクタによって選択された要素をconsole.logにしたいが、それは常にFirebugコンソールパネルに[object Object]を表示する。私が選んだ本物の要素をどうやって見ることができますか? – chaonextdoor

+0

Do: 'console.log($( 'ul li')。eq(index))'です。 – iambriansreed

+0

jQueryオブジェクト(現在ロギングしているもの)からHTML要素を取得するには、 'console.log($( 'ul li:eq(' + myVar + ')' [0])'を使用します。 –