带有jQuery.stop()的无限循环
我在玩弄jQuery的带有jQuery.stop()的无限循环,jquery,jquery-animate,Jquery,Jquery Animate,我在玩弄jQuery的stop(),结果得到了一个无限循环。 其想法是(只是出于实验)创建一个带有“步长”条件的动画,该条件将检查元素的css属性是否达到某个值,在这种情况下,将动画停止在其轨迹上,清除队列并立即完成动画 我知道这听起来可能很傻,因为这可能不是.stop()的使用方式,但我想你可能会给我这个意外行为的答案 代码如下: $("#element").animate({ "width": "500px", "height": "130px" }, { "dura
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);
我发现无限循环是由传递给stop()
的第二个true
引起的,也就是告诉动画立即完成的参数
它可能与“步进”功能有关,但有人能解释一下这种行为吗?它可能是这样做的:
$(this).stop(true, true);
将执行最后一步的
步骤
功能。在那次呼叫中,您再次呼叫停止。在步骤
功能完成之前,不会从队列中删除动画。由于动画仍在队列中,再次调用stop
将执行最后一步。。。持续不断。谢谢你,虽然我不完全理解你的答案,但让我们看看我是否明白要点:当我打电话时。停止(真,真)动画最后一次运行并执行“步骤”。。。在“步骤”中,再次调用stop并使动画最后一次再次运行。。。以此类推,一个无限循环被创建。。。对吗?另外,你能提供一些代码来说明如何正确地实现我的目标吗?非常感谢你。