2010-10-15 37 views
0

我有一个变量,其值与页面上的ID相同。当我这样做:用文字和变量构建选择器?

var foo = 'value'; 
$('#' + foo).thing(); 

它不起作用。但这确实有效:

var foo = 'value'; 
var bar = '#' + foo; //'#value'; 
$(bar).thing(); 

我该如何在单行中构建该选择器?创建额外的单次使用变量似乎很浪费。

+2

这应该工作。你能发布你的实际代码吗? – hookedonwinter 2010-10-15 21:24:23

+0

概念证明:http://jsfiddle.net/JVxRX/ – hookedonwinter 2010-10-15 21:28:26

+1

@hooked是正确的 - 这是* *外的问题是影响这一点,如果它不工作。 – 2010-10-15 21:30:00

回答

1

用户错误 - 我曾在变量(在Twitter的事情工作)的“@”,因此所得到的ID是“#@值”,这是因为@违法。修正了这个问题,现在它正在工作。

0

嗯。我从来没有遇到过这个问题。但是,也许你可以尝试只需添加另一组括号在你的内心声明:

$(("#" + foo)).something();

,如果im不偏轨,这可能会迫使JavaScript来“计算”内部支架第一,它传递到jQuery选择功能之前。 goog运气...

+0

不...实际上我只是测试它,它可以很好地动态生成选择器字符串。如果你使用了错误的名字,请确保你声明了保存选择器字符串的变量,JavaScript将会创建一个新的空字符串并尝试将其用作预期的变量,这显然会失败。如果你复制你的代码,我会看看... – joshuafreelance 2010-10-15 21:41:38