Javascript jQuery:停止定期的ajax调用?

Javascript jQuery:停止定期的ajax调用?,javascript,jquery,Javascript,Jquery,我正在编写一个小型jQuery插件,用使用Ajax调用获得的内容更新一组div。首先,假设我们有4个div。我正在做这样的事情: (function($) { .... .... //main function $.fn.jDIV = { init: function() { ... ... for(var i = 0; i < numDivs; i++) {

我正在编写一个小型jQuery插件,用使用Ajax调用获得的内容更新一组div。首先,假设我们有4个div。我正在做这样的事情:

(function($) {
    ....
    ....

    //main function
    $.fn.jDIV = {
       init: function() {
          ...
          ...
          for(var i = 0; i < numDivs; i++) {
             this.query(i);
          }
          this.handlers();
       },

       query: function(divNum) {
          //Makes the relevant ajax call
       },

       handlers: function() {
          for(var i = 0; i < numDivs; i++) {
            setInterval("$.fn.jDIV.query(" + i + ")", 5000);
          }
       }
    };

})(jQuery);
start: function(divNum) {
    divs[divNum] = setInterval("$.fn.jDIV.query(" + divNum + ")", 5000);
},
stop: function(divNum) {
    clearInterval(divs[divNum]);
}

我没有使用jQuery设置和销毁事件处理程序。有没有更好的方法可以使用更多的jQuery来实现这一点?

请不要将字符串传递给setTimeout或setInterval!,改为给它一个匿名函数…例如,使用.noConflict尝试您的代码,它将中断,因为它实际上依赖于$being jQuery,当该间隔执行时。如果传递函数,则可以正确使用此.queryi;,只需确保将i传递到闭包中。解释为+1。谢谢尼克·克雷弗:当我传递一个匿名函数并替换为this.queryi时,它会抱怨this.query不是一个函数。如果我遗漏了什么,你能告诉我吗?我使用的是:setIntervalfunction{this.queryi;},5000;您还需要将其传递到闭包中,或者使用$.proxy,无论哪种方式,这里都是非代理方法。请查看控制台以获得输出:@Nick:Great。谢谢。。。