清除使用setInterval创建的多个变量实例

时间:2014-05-02 02:24:16

标签: javascript jquery html variables setinterval

问题描述(Fiddle):

我尝试通过类上的mousedown事件清除使用setInterval创建的变量的多个实例。在提供的示例中,如果您只点击一次黑框,小猫将闪烁两次,然后该变量将被取消设置。

如果您在5秒的时间内多次单击黑匣子,则会出现多个小猫实例,并且永远不会删除后续点击。为什么不清除red擦除变量的所有实例?

我知道我可以完成锁定'通过设置一个标志来点击,但有没有更优雅的方法解决这个问题,可能使用this或其他一些奇特的结构?如果不是red,那么这些后续变量是什么?

代码:

var red;

$('.container').mousedown(function() {
    red = window.setInterval(function() {
        $('<img src="http://placekitten.com/g/25/25" />').appendTo('body').animate({
            'opacity': 0
        }, 1000, function(){ $(this).remove(); });
    }, 2000);

    setTimeout(function() {
        window.clearInterval(red);
    }, 5000);

});

1 个答案:

答案 0 :(得分:2)

&#34;为什么不清除红色擦除变量的所有实例?&#34;。

实际上确实如此。你的代码很清楚,你只需要在5秒后清除间隔。因此,如果单击元素20次,则会创建20个间隔。如果您只希望它一次点火,则需要在设置新间隔之前清除间隔。

例如,在设置间隔之前放置它:

window.clearInterval(red);

jsFiddle:http://jsfiddle.net/ngDTV/9/