0

我有一个 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 并且在计时器重置后不再刷新页面。我在这里错过了什么吗?

4

1 回答 1

3

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

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

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

于 2011-09-04T01:48:40.000 回答