清除所有 setIntervals

新手上路,请多包涵

我在 each() 函数中使用 setIntervals 就像这样

$(".elements").each(function() {
    setInterval(function() {

    }, 1000);
});

显然,为每个元素创建了一个 setIntervals。

我的问题是:当我不再需要它们时,如何清除所有 setIntervals?我尝试将 setInterval 存储在一个变量中并调用 window.clearInterval(int) ,但这只会清除最后一个 setInterval,因为每个变量都被覆盖了。

原文由 user3758078 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

当你设置一个间隔时,你会得到一个指向它的指针:

 var myInterval = setInterval(function(){}, 4000);

如果要取消间隔,请执行以下操作:

 clearInterval(myInterval);

因此,对于您想做的事情,您可以执行以下操作:

 var intervals = [];
$(".elements").each(function() {
    var i = setInterval(function() {

    }, 1000);
    intervals.push(i);
});

然后,如果您需要全部取消它们,您可以这样做:

 intervals.forEach(clearInterval);

那应该为你做。

原文由 frosty 发布,翻译遵循 CC BY-SA 3.0 许可协议

这对我有用:

 // clear interval
var id = window.setInterval(function() {}, 0);
while (id--) {
window.clearInterval(id);

原文由 The Mask 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题