2010-05-04 50 views
0
(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中訪問內部函數

回答

3

,而不是字符串,你需要通過直接引用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