如何将变量传递给jQuery查询?

3

因为某些原因,这个可以工作:

var oldText = $("#tayke li:eq(" + theIndex + ")" ).text();

但是这个不会:
var tayke_li =  "#tayke li:eq(" + theIndex + ")"
var oldTest = $( tayke_li ).text();

注意:theIndex是一个整数。


2
你在第二行前面漏了 ;,还是只是打错了? - Darmen Amanbay
2
与第一个比较中出现的另一个拼写错误是"oldText" 变成了 "oldTest" (x -> s)。如果你提醒我测试一下是否可行,那么它会失败。 - Gabriele Petrioli
1
当你说它不起作用时,是指它只是没有选择你想要的内容,还是代码出现了错误? - Adrian Lynch
哇,Gaby,好棒啊。我真是个傻瓜。我想那就是问题所在了。现在似乎可以工作了。编辑:我是 Stack Overflow 的新手,不知道这是否被允许,但如果你用那个回答做一个官方答案,我会标记为已接受的。 - Phil
使用像WebStorm这样的好IDE,您会发现未使用的变量被下划线标出以及许多其他功能。对于专业的JavaScript开发人员来说,它真的值得花费。 - Nicolas Zozol
3个回答

1

它可以双向工作。我重新做了一遍,它起作用了。 检查theIndex变量的更改和范围。尝试将其替换为硬编码1

将jQuery版本信息添加到问题中,并且浏览器规格也很好。


oldText != oldTest 是唯一的解释,为什么这不应该工作,在我看来;但这不是我会给出的答案。 - naugtur

0

如果你把分号放在行末,这会有什么区别吗?

var tayke_li =  "#tayke li:eq(" + theIndex + ")"; //<---

我已经设置了一个简单的示例,它运行良好:

alert($("#tab1").length);
var s = "#tab" + String(1); //alerts "1"
alert(s);  //alerts "#tab1"
alert($(s).length); //alerts 1

同时,尝试使用String()theIndex明确转换为字符串。您是否已经仔细检查了存储在tayke_li中的内容?

需要分号吗?

您是否建议在JavaScript的每个语句后使用分号?

这段javascript的后果是什么?

我应该在JavaScript中使用分号吗?

http://www.webmasterworld.com/forum91/521.htm


啊,只是一个打字错误。不过没有影响。 - Phil
尝试使用以下代码:var tayke_li = "#tayke li:eq(" + theIndex.toString() + ")" - Darmen Amanbay
alert("#tayke li:eq(" + theIndex + ")"); 这段代码会给你什么结果? - James Wiseman
达门,还是不行。詹姆斯,当我点击第三个列表项时,它会给我#tayke li:eq(3)。 - Phil
我并没有说它们不需要,我说它们不是必需的。需求是规范的定义,需要是开发人员的定义,JavaScript在语句末尾不需要分号,但开发人员可能经常需要。而我是在问题和你对问题的回答的背景下进行评论和投票的,而不是JavaScript的一般情况。据我所知,在JS中没有需要将其转换为字符串以进行字符串连接的情况。请不要把它当作个人攻击,这就是投票系统的用途。 - Andy E
显示剩余3条评论

0

尝试

var oldText = $("#tayke li:eq("+parseInt(theIndex)+")").text();

或者

var oldText = $("#tayke li").eq(theIndex).text();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接