var test1;
$(document).ready(function () {
test1 = $("#test1ID").jQueryPlugin();
});
var test2;
$(document).ready(function () {
test2 = $("#test2ID").jQueryPlugin();
});
...
这样做我们可以做test1.foo()
... foo是jQueryPlugin中的一个函数,可以使用test1.foo()
语法访问;
所以我们有一个包含(test1,test2,...)的字符串数组 我们需要在循环中访问foo():
for(i=0; i < theArrayOfStrings.length; i++){
theArrayOfStrings[i].foo();
//so here is the problem... we can't do test1.foo(), test2.foo() ... =(
}
关于如何在循环中调用函数foo()的任何想法? 或者我们可以将字符串值转换为javascript中的变量吗?
答案 0 :(得分:4)
创建一个对象以保存所有“测试”可能是值得的:
var tests = {};
$(document).ready(function () {
tests.test1 = $("#test1ID").jQueryPlugin();
tests.test2 = $("#test2ID").jQueryPlugin();
});
for(i=0; i < theArrayOfStrings.length; i++){
tests[theArrayOfStrings[i]].foo();
}
答案 1 :(得分:2)
eval() function用于评估字符串变量中的脚本。例如:
var test1;
eval("test1=" + theArrayOfStrings[i]);
test1.foo();
之前,请先考虑这个问题
答案 2 :(得分:1)
如果test1
是全局变量,您可以通过window
对象按名称访问它:
window[theArrayOfStrings[0]].foo(); // test1();
如果不是,eval
是唯一的方法,但我强烈建议在所有情况下都避免使用eval
。使用J-P的答案(+1)中的查找比选择变量名更合适。
答案 3 :(得分:0)
答案 4 :(得分:0)
var test = [], n = 5;
$(document).ready(function () {
for(var i=0; i < n; i++)
test.push($("#test"+i+"ID").jQueryPlugin());
});
// the values in test won't be accessible before the document is loaded.