我在鬼混jQuery的stop()并以无限循环结束。
这个想法是(出于实验目的)创建一个具有“步进”条件的动画,该条件将检查元素的css属性是否达到某个值,并且在这种情况下,将动画停止在其轨迹中,清除队列并完成立即播放动画。

我知道这听起来很愚蠢,因为可能不是.stop()的使用方式,但是我想您可能会为我提供这种意外行为的答案。

这是代码:

$("#element").animate({
    "width": "500px",
    "height": "130px"
}, {
    "duration": 850,
    "step": function () {
        var currentWidth = $(this).width();
        if(currentWidth >= 295) $(this).stop(true, true);
    }
}).slideUp(700);


我发现无限循环是由传递给true的第二个stop()引起的-即,该参数指示动画立即完成。

它可能与“步进”功能有关,但是有人可以向我解释这种行为吗?

最佳答案

致电:

$(this).stop(true, true);


将在最后一步执行step函数。在该呼叫中,您正在再次呼叫停止。直到step功能完成后,才会从队列中删除动画。由于动画仍在队列中,因此再次调用stop将连续执行最后一个step...。

关于jquery - jQuery .stop()的无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9875267/

10-13 04:09