我在用
varName = setInterval(function() { ... }, 1000);
在我正在编写的 jquery 插件中设置几个间隔,但是当重新加载插件时,我需要清除这些间隔。我尝试将它们存储在变量中,如下所示:
(function($){
$.mosaicSlider = function(el) {
var base = this;
var transitionInterval, mainInterval;
...
base.init = function() {
mainInterval = setInverval(function() { ... }, 1000);
}
base.grid = function() {
this.transition() = function() {
transitionInterval = setInterval(function(...) {
}
}
base.init();
我尝试在 base.init() 函数中取消这些间隔,如下所示:
clearInterval(transitionInterval);
clearInterval(mainInterval);
像这样:
window.oldSetInterval = window.setInterval;
window.setInterval = new function(func, interval) { }
原文由 Nikolay Dyankov 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过创建一个“什么都不做”的新计时器(通过给它一个空函数来运行,计划在未来几十年运行)来找到“最高”计时器标识符,然后清除 ids 1 和该标识符之间的每个计时器,像这样:
但是,请注意,这并不能 保证 有效:HTML 标准 实际上并未规定 如何分配超时/间隔标识符,因此我们将获得对“最后间隔标识符 + 1”的引用的假设仅仅是:假设。在回答这个问题时对于大多数浏览器来说可能是正确的,但不能 保证 即使在同一浏览器的下一个版本中仍然如此。