访问setInterval中的内部函数

时间:2010-05-04 10:34:49

标签: jquery timer

(function($)
{
    $.fn.myPlugin = function(options)
    {
        var _this;
        var timer1;

        var foo = function(n)
        {
            if (timer1 != null) return; // in action
            timer1 = setInterval("bar("+n+")", 500);
        };

        var bar = function(n)
        {
            ...
            if ( ... ) clearInterval(timer1);
        };                      

        return this.each(function()
        {
            _this = $(this);
            _this.bind("click", function(){ foo(10); });            
        });
    }
})(jQuery);

这不起作用,因为“bar未定义。”

1 个答案:

答案 0 :(得分:3)

而不是字符串,你需要传递一个直接引用bar的函数,所以不要这样:

setInterval("bar("+n+")", 500);

这样做:

setInterval(function() { bar(n) }, 500);

You can see this working here

此外,您需要接受问题以获得任何未来的答案,您可以通过单击帮助您解决问题的答案旁边的复选标记来执行此操作。它为您提供代表,回答者代表,并帮助下一位Google员更快地找到合适的答案。