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

更具可读性和更快的版本是:

如果context是 DOM 节点:

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

如果context是一个 jQuery 对象:

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