我创建了一个具有唯一ID的setTimeouts对象数组。我的想法是,我希望能够使用id清除其中一个setTimeouts,但我一直无法弄清楚如何。
以下是我构建对象数组的方法:
var loading = {};
loading[id] = setTimeout(function() {
// function
}
以下是我尝试清除setTimeout的方法:
clearInterval(loading[id]);
我认为会工作,但没有这样的运气。看起来这样可行:
$.each(loading, function(index, value) {
if (index == id) {
clearInterval(loading[index]);
}
}
但是每次必须遍历整个阵列的想法似乎是浪费。对此有一个单行解决方案吗?
答案 0 :(得分:2)
您使用了错误的功能来清除超时。如果您正在使用超时,则应使用" clearTimeout"功能。使用" clearInterval"清除间隔。功能
var intervals = {};
intervals[0] = setInterval(function() {
console.log('first');
}, 1000);
intervals[1] = setInterval(function() {
console.log('second');
}, 1000);
$('#clearIntervalBtn').bind('click', function(i) {
clearInterval(intervals[1]);
});
以下是有关清算间隔的示例:http://jsfiddle.net/AG9Fh/15/