我需要一种方法来查找先前在document.ready()函数中加载的变量的名称。变量的名称绑定在需要再次调用它的元素的id内。
假设变量为var myScrollscroll5
,需要再次调用变量的元素的id将为scroll5
。因此,我希望这会奏效。
'myScroll' + $('.dircore').attr('id').refresh();
我们不能只调用变量,因为名称是未知的,只能在元素.dircore的id中找到。
奇怪的是,这只适用于firefox,即使firebug说这是一个错误。但是在其他浏览器中不起作用。
答案 0 :(得分:0)
您需要eval
:
var sVarName = 'myScroll' + $('.dircore').attr('id');
eval(sVarName + ".refresh();");
虽然eval
被认为是邪恶的,但它有时会很有用,这看起来像其中一个时间,因为您不评估用户输入只是您自己的内部数据。
答案 1 :(得分:0)
如果您添加了一些可能有用的代码。对我而言,它似乎是全局与本地范围问题。无论您在做什么,只需先在全局范围内定义变量,然后在函数内部设置值,无论您使用何种方法来实例化变量值。例如
A)。 //在全球范围内 var myvariable = null;
//inside function
$(document).ready(function(){
myvariable='set_value_here'
})
然后在全局或本地范围内访问变量。
b)其他选项可能将变量定义为对象
var myScrollscroll5={value:'value', id:'idof'}
$('#'+myScrollscroll5.id).refresh()
欢呼:)
答案 2 :(得分:0)
你不能使用jQuery .data()函数将数据绑定到元素,并在以后调用它吗?
像这样:
$(document).ready(function(){$('#scroll5')。data('data',value);});
然后:
$('。dircore')。each(function(){$(this).data('data')。refresh();});
或类似的东西。这样,您也可以避免因循环引用和由它们引起的内存泄漏。