我在鼠標關閉期間將對象移動到1個方向,鼠標指針上升時應停止動畫。setTimeout在clearTimeout被調用後繼續運行
我正在使用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排隊成千上萬的回調。 – j08691 2015-02-06 20:16:38
你不需要匿名函數包裝器。你可以使用'setTimeout(tomove,1)'和'mousedown(tomove)'。 – Oriol 2015-02-06 20:20:11
@MattBurland爲什麼有問題?每個計時器只會創建一個新計時器:下一個計時器。因此取消最後一個計時器將停止動畫。問題是最後的計時器並不總是被取消。 – Oriol 2015-02-06 20:28:43