我认为问题与Jquery中的队列有关。 我们可以使用clearQueue()来清除队列以停止任何动画,但是清除队列无法停止回调函数 考虑一下
$("#sth").animate( { width:'100%' }, 2000, function() {
$("#sth").css("width","0%");
});
和
$("#sth").clearQueue().css("width","0%");
能够停止动画并推回宽度。但是,在2000毫秒之后,由于完整的回调功能,它也将变为100%宽度。无论队列是否存在,该函数都将在2000毫秒后调用。
答案 0 :(得分:2)
来自jQuery文档:
.clearQueue() 从队列中删除所有尚未运行的项目。
和
.stop() 停止匹配元素上当前运行的动画。
尝试使用.stop()代替.clearQueue()。
答案 1 :(得分:0)
调用停止功能将停止附加在sth obj上的动画
function stopSthAnim(){
$('#sth#).stop();
}
您还可以使用完整的回调函数
$("#sth").animate( { width:'100%' }, {
duration:2000,
complete: function(){
$('#sth#).stop();
}
}, function() {
$("#sth").css("width","0%");
});