2010-02-12 57 views
3

出于某种原因,这个工程:如何将变量传递给jQuery查询?

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

但这并不:

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

注:theIndex是一个整数。

+2

你';第2行之前'错过或者这只是一个错字? – Darmen 2010-02-12 13:19:35

+2

与第一个比较的另一个错字是oldText变成了oldTest(* x - > s *)。如果你警告,看看它是否有效,它会失败.. – 2010-02-12 13:22:28

+1

当你说它不起作用,它只是没有选择你想要的或是代码抛出一个错误? – 2010-02-12 13:26:01

回答

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

是否需要使用分号?

Do you recommend using semicolons after every statement in JavaScript?

What is the consequence of this bit of javascript?

Should I use semicolons in JavaScript?

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

+0

啊,只是一个错字。 – Phil 2010-02-12 13:18:12

+0

刚刚试过 var tayke_li =“#tayke li:eq(”+ String(theIndex)+“)”; no luck – Phil 2010-02-12 13:20:49

+0

尝试'var tayke_li =“#tayke li:eq(”+ theIndex.toString()+“)”' – Darmen 2010-02-12 13:22:28

1

这两种方式都可以。我重做了它,它工作。 检查变量和范围的索引变量。尝试将其替换为硬编码1

将jQuery版本信息添加到问题中,并且浏览器规范也不错。

+0

oldText!= oldTest是唯一的解释,为什么这不应该工作恕我直言;)但这不是我作为答案。 – naugtur 2010-02-12 13:33:18

0

尝试

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

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