0
index = 5;
alert($('ul li:eq(index) a',context).html());

このスクリプトは : を警告します"Null"が、次のように変更すると:

alert($('ul li:eq(5) a',context).html()); // it works

では、このスクリプトの何が問題なのですか?

4

2 に答える 2

5
alert($('ul li:eq('+index+') a',context).html());

'ul li:eq(index) a'結果のセレクターを使用すると、同じであるからです'ul li:eq(index) a'

しかし'ul li:eq(' + index + ') a'、結果のセレクターのような文字列連結を使用すると'ul li:eq(5) a'、JS インタープリターがindex変数の値を置き換えて新しい文字列を作成するためです。

于 2012-06-17T13:29:19.623 に答える
3

文字列ではなく、変数値を使用する必要がありindexます...

index = 5;
alert($('ul li:eq(' + index + ') a',context).html());

はるかに読みやすく、少し高速なバージョンは次のとおりです。

contextDOM ノードの場合:

$(context).find('ul li').eq(index).find('a').html()

contextjQuery オブジェクトの場合:

context.find('ul li').eq(index).find('a').html()
于 2012-06-17T13:29:43.757 に答える