我尝试通过类上的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);
});
答案 0 :(得分:2)
&#34;为什么不清除红色擦除变量的所有实例?&#34;。
实际上确实如此。你的代码很清楚,你只需要在5秒后清除间隔。因此,如果单击元素20次,则会创建20个间隔。如果您只希望它一次点火,则需要在设置新间隔之前清除间隔。
例如,在设置间隔之前放置它:
window.clearInterval(red);
jsFiddle:http://jsfiddle.net/ngDTV/9/