清除所有 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 许可协议

推荐问题