【问题标题】:How to Clear Interval when Using Set Interval in jQuery?在jQuery中使用设置间隔时如何清除间隔?
【发布时间】:2011-11-09 22:46:16
【问题描述】:

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

【问题讨论】:

  • clearInterval 不会重置间隔计时器 - 它会完全停止它。如果要“重新启动”它,则必须清除当前间隔,然后开始新的间隔。另外,我不知道你在用“reFreshPage”做什么,但如果你真的在刷新页面(例如加载新页面),那么你当前的所有 javascript 都会停止并被新页面重新初始化。跨度>

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!但是还有一个问题..我如何在另一个函数上调用 clearInterval,因为我打算在函数 x 上调用它,w/c 在另一个文件中,对不起新手..
  • 同样的方法,只要确保像 jfriend00 那样将间隔分配给 var,并确保处理清除的函数可以访问 var。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2020-09-28
  • 2018-08-01
相关资源
最近更新 更多