【发布时间】:2015-02-06 20:14:02
【问题描述】:
我正在为一个对象设置动画以在鼠标按下时向 1 个方向移动,而当鼠标 clic 向上时,动画应该停止。
我正在使用 setTimeout,但在我释放 clic 后它会继续移动一段时间。
var stopmov
function tomove(){
$('.plwid').animate({
left: '+=1'
},1);
stopmov=setTimeout(function(){ tomove(); }, 1);
}
$('.plwid').mouseup(function(){
clearTimeout(stopmov);
}).mousedown(function(){
tomove();
});
【问题讨论】:
-
您需要检查鼠标是否按下,而不是从您的递归 setTimeout 调用中排队数千个回调。
-
您不需要匿名函数包装器。您可以使用
setTimeout(tomove, 1)和mousedown(tomove)。 -
@MattBurland 为什么会有问题?每个计时器只创建一个新计时器:下一个。所以取消最后一个计时器将停止动画。问题是最后一个计时器并不总是被取消。
标签: javascript jquery jquery-animate settimeout cleartimeout