对象中的缓存选择器(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
版本。

您的objescribir的成员,因此需要将其更改为
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);
    }
}