对象中的缓存选择器(jquery)
我有个问题。。。我做错了什么 我想使用以前保存在变量中的选择器。其思想是在对象的函数中使用它对象中的缓存选择器(jquery),jquery,Jquery,我有个问题。。。我做错了什么 我想使用以前保存在变量中的选择器。其思想是在对象的函数中使用它 var escribir = { obj:$('#cont'), algo: function(i) { escribir.obj.html(i++); setTimeout('escribir.algo('+i+')',1000); } } $(document).ready( function(){ escribir.alg
var escribir = {
obj:$('#cont'),
algo: function(i) {
escribir.obj.html(i++);
setTimeout('escribir.algo('+i+')',1000);
}
}
$(document).ready(
function(){
escribir.algo(0);
}
);
....
<div id="cont"></div>
var描述={
目标:$('续'),
算法:函数(i){
escribir.obj.html(i++);
setTimeout('escribir.algo('+i+'),1000);
}
}
$(文件)。准备好了吗(
函数(){
描述算法(0);
}
);
....
编辑:这里的工作示例如果以更好的形式使用闭包,可能会更好
jQuery(function ($) {
var escribir = {
obj : $('#cont'),
algo_counter : 0,
algo : function () {
escribir.obj.html(escribir.algo_counter++);
setTimeout(escribir.algo, 1000);
}
};
// optionally:
// escribir.algo_counter = 10;
escribir.algo();
}
这样,您就不会使用
setTimeout
的eval
版本。您的obj是escribir的成员,因此需要将其更改为escribir.obj
:
var escribir = {
obj:$('#cont'),
algo: function(i) {
escribir.obj.html(i++); // without escribir.obj you will get reference error, otherwise you have a variable name obj.
setTimeout('escribir.algo('+i+')',1000);
}
}
将函数调用传递到setTimeout
将不起作用。如果不是eval
版本(是的,邪恶),则必须传入函数引用。因此,您必须将其包装在lambda中:setTimeout(函数(){escribir.algo(i);},1000)代码>。问题是。。。obj:$('#cont')和escribir.obj.html(i++);不工作。。。
var escribir = {
obj:$('#cont'),
algo: function(i) {
escribir.obj.html(i++); // without escribir.obj you will get reference error, otherwise you have a variable name obj.
setTimeout('escribir.algo('+i+')',1000);
}
}