index = 5;
alert($('ul li:eq(index) a',context).html());
此脚本将提醒:"Null"
,但当我更改为:
alert($('ul li:eq(5) a',context).html()); // it works
这个脚本有什么问题?
答案 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()