2

我认为这个问题与 Jquery 中的队列有关。我们可以使用 clearQueue() 清除队列以停止任何动画,但是清除队列不能停止回调函数考虑这一点

$("#sth").animate( { width:'100%' }, 2000, function() {
    $("#sth").css("width","0%");
});

$("#sth").clearQueue().css("width","0%");

能够停止动画并推回宽度。但是,在 2000 毫秒之后,它也会变成 100% 宽度,因为完整的回调函数。无论队列是否存在,该函数都会在 2000 毫秒后调用。

4

2 回答 2

2

来自 jQuery 文档:

.clearQueue() 从队列中删除所有尚未运行的项目。

.stop() 停止匹配元素上当前正在运行的动画。

尝试使用 .stop() 代替 .clearQueue()。

于 2012-09-03T21:25:42.180 回答
0

调用 stop 函数将停止附加在 sth obj 上的动画

function stopSthAnim(){
    $('#sth#).stop(); 
}

你也可以使用完整的回调函数

$("#sth").animate( { width:'100%' }, {
        duration:2000,
        complete: function(){
           $('#sth#).stop(); 
        }
    }, function() {
    $("#sth").css("width","0%");
});
于 2020-02-12T19:07:57.070 回答