如何在jQuery中使用Set Interval时清除间隔?

时间:2011-09-04 01:47:33

标签: jquery ruby-on-rails refresh setinterval clearinterval

我有一个jquery插件,每5分钟自动刷新一次页面。

(function($) {
  $.fn.refreshPage = function() {

    setInterval(function() {
      function x();
    }, 300);
  };
})(jQuery);

但问题是我希望它在某个函数运行时重置计时器,我读过clearInterval,但我不知道如何在这里实现。更具体地说,我希望函数x在每次运行时都清除间隔。

跟进问题:

在给定插件的当前结构的情况下,如何在另一个文件的函数上调用clearInterval?抱歉,诺布在这里。谢谢!

任何帮助将不胜感激。提前谢谢!

更新

我的插件现在看起来像这样

(function($) {
  var refresh_timer;
  $.fn.refreshPage = function() {

    refresh_timer = setInterval(function() {
      function x();
    }, 300);
  };
  $.fn.reFreshPage.resetTimer = function() {
    clearInterval(refresh_timer);
})(jQuery);

我打电话给:

$.fn.reFreshPage.resetTimer

重置间隔,但问题是它会中断setInterval,并且在重置定时器后不再刷新页面。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:3)

您只需记住原始调用setInterval的返回值,然后可以将其传递给clearInterval以停止计时器。

var timer = setInterval(...);
clearInterval(timer);

有时,当您想要更多控制时,更容易不使用setInterval(),而是使用setTimeout()并在每个连续计时器上重复调用setTimeout(),直到您希望它停止为止。如果需要,这种技术还可以更容易地改变定时器间隔。