index = 5;
alert($('ul li:eq(index) a',context).html());
このスクリプトは : を警告します"Null"
が、次のように変更すると:
alert($('ul li:eq(5) a',context).html()); // it works
では、このスクリプトの何が問題なのですか?
index = 5;
alert($('ul li:eq(index) a',context).html());
このスクリプトは : を警告します"Null"
が、次のように変更すると:
alert($('ul li:eq(5) a',context).html()); // it works
では、このスクリプトの何が問題なのですか?
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
変数の値を置き換えて新しい文字列を作成するためです。
文字列ではなく、変数値を使用する必要がありindex
ます...
index = 5;
alert($('ul li:eq(' + index + ') a',context).html());
はるかに読みやすく、少し高速なバージョンは次のとおりです。
context
DOM ノードの場合:
$(context).find('ul li').eq(index).find('a').html()
context
jQuery オブジェクトの場合:
context.find('ul li').eq(index).find('a').html()