2011-04-12 53 views
8

的文本字符串,我想使用jQuery選擇通過傳遞變量名的文本字符串返回一個變量:JQuery的選擇變量通過傳遞它的名字

前。

var test = "xxx"; 

我想我可以做這樣的事情,但它不會工作:

alert($("#test")); 

編輯:人們感到困惑。把它看作是獲得var測試內容的反射方式。 Preferrably用jQuery選擇,但我會採取什麼辦法可以拿出吧..

+3

和'警報(測試)'會不會因爲工作...? – mVChr 2011-04-12 19:53:07

+0

,因爲我想使用變量名稱的字符串。不可能? – KevinDeus 2011-04-12 19:54:40

+0

我想你想使用字符串來構建一個選擇,是否正確? – 2011-04-12 19:55:28

回答

11

這應該爲你工作。你必須在這個字符串引號之外使用這個變量。如果你要使用樣式選擇VS ID選擇,你可以用.更換#

var test = "xxx"; 
alert($("#" + test)); 

如果該字段是一樣的東西<input name="xxx" .../>,你將不得不使用類似如下:

var test = "xxx"; 
alert($("[name=" + test + "]")); 
0

也許你需要的是

alert($("#" + test)); 
+3

這將使他獲得DOM元素與測試保持的字符串的ID,但不是等同於測試所持有的字符串的變量。他正在嘗試做一個變量變量,如echo echo test – FatherStorm 2011-04-12 19:56:57

0
var test = "#xxx"; 
alert($(test)); 

或者,你可以使用:

var test = "xxx"; 
alert($("#" + test)); 
0

不知道,但也許你正在尋找eval函數。

+0

那樣,但不完全一樣。 – KevinDeus 2011-04-12 20:11:57

2

你所問的是最好的JavaScript對象進行,例如:

var obj = { test: "xxx" }; 
for(key in obj) { 
    alert(key); // "test" 
    alert(obj.key); // "xxx" 
} 

你可以做這樣的事情,但我真的不明白這一點:

var obj = { foo: "xxx" }; 
for(key in obj) { 
    alert($("#" + key).length); // 1 
} 

<input id="foo"/> 

http://jsfiddle.net/J4hC8/

+0

有幫助。是的,這是一個替代,但我試圖做到這一點沒有陣列 – KevinDeus 2011-04-12 20:09:18

2

不知道你的最終目標,但我用下面的方法有很多,當我需要一個東西與其他互動...

<a href='whatever.html' rel='#targetElem' class='loadable'> 
<script> 
$(document).ready(function(){ 
    $('.loadable').live('click',function(){ //when a element with the class of loadable is clicked 
    $($(this).attr('rel')).load($(this).attr('href')); //load the contents of it's href URL into the element specified in it's rel attribute 
    return(false); // stop processing the link; 
}); 
}); 

</script> 

我告訴元素是什麼工作的對象將使用rel屬性...

得到的變量試試這個(窗口是內置全局變量數組一個javascript ... )

var i=2; 

var test='i'; 
document.write('got ' + window[test]); 
+0

我改變了你的底部建議,以獲得它。真棒!警報(窗口[ 「測試」]);適用於我上面的示例(IE8,FF,Chrome) – KevinDeus 2011-04-12 20:24:32

+0

+1:創新使用窗口陣列。但不建議任何地方:) – naveen 2011-04-12 20:28:04

0

我知道這是舊的,但這裏是解決方案。正如igor milla所說,你應該使用eval()。

var test = "xxx"; 
 
alert(eval("test"));