Javascript jQuery:停止定期的ajax调用?
我正在编写一个小型jQuery插件,用使用Ajax调用获得的内容更新一组div。首先,假设我们有4个div。我正在做这样的事情: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++) {
(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。谢谢。。。