在eq()中使用变量

时间:2012-06-17 13:28:28

标签: javascript jquery

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

此脚本将提醒:"Null",但当我更改为:

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

这个脚本有什么问题?

2 个答案:

答案 0 :(得分: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变量的值并构建新字符串。

答案 1 :(得分:3)

您需要使用变量值,而不是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()