对象数组中特定setTimeout上的clearInterval()

时间:2014-06-15 17:28:37

标签: jquery arrays object settimeout clearinterval

我创建了一个具有唯一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]);
    }
}

但是每次必须遍历整个阵列的想法似乎是浪费。对此有一个单行解决方案吗?

1 个答案:

答案 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/