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()