在setInterval中访问内部函数

在setInterval中访问内部函数

问题描述:

(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未定义”。在setInterval中访问内部函数

,而不是字符串,你需要通过直接引用bar的功能,所以不是这样的:

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

这样做:

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

You can see this working here

而且,你需要接受问题才能得到将来的答案,您可以通过点击帮助您解决问题的答案旁边的复选标记来执行此操作。它给你代表,答复者代表,并帮助下一个Google员工更快地找到合适的答案。

+0

没有意识到第一个参数可以是一个函数而不是字符串。 – Phonethics 2010-05-04 12:19:20