2010-05-04 5 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); 

Cela ne fonctionne pas car "la barre n'est pas définie".Accès à une fonction interne dans setInterval

Répondre

3

Au lieu d'une chaîne, vous devez passer une fonction qui fait référence directement bar, donc au lieu de ceci:

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

Pour ce faire:

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

You can see this working here

En outre, vous Vous devez accepter les questions pour obtenir des réponses futures. Pour ce faire, cliquez sur la coche en regard de la réponse qui vous a aidé à résoudre le problème. Il vous donne rep, le représentant de répondeur, et aide le googler suivant à trouver la réponse appropriée plus rapidement.

+0

N'a pas réalisé que le premier argument peut être une fonction au lieu d'une chaîne seulement. – Phonethics

Questions connexes