jquery - 使用 jQuery .stop() 进行无限循环

标签 jquery jquery-animate

我在玩弄 jQuery 的 stop() 并最终陷入了无限循环。 这个想法(只是出于实验)创建一个带有“step”条件的动画,该条件将检查元素的 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 引起的 - 即告诉动画立即完成的参数。

这可能与“step”功能有关,但是有人可以解释一下这种行为吗?

最佳答案

调用:

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

将执行最后一步的step函数。在该调用中,您再次调用停止。在该 step 函数完成之前,动画不会从队列中删除。由于动画仍在队列中,因此再次调用 stop 会执行最后一个步骤...不断执行。

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

相关文章:

jquery - BJQS slider 限位器

javascript - AngularJS 指令和 jQuery DOM 事件绑定(bind)

jquery - 使用 jQuery 悬停另一个元素时动画元素背景图像

javascript - 暂停和恢复 JQuery.animated 对象

javascript - 将元素滑出屏幕 -- 等待 --- 滑回原位

jquery - HTML 表单通过提交 'click' 触发器提交两次

jquery - 在 jQuery One Page Nav 插件中更改导航事件部分的样式

从外部加载时 jQuery fadeIn IE Png 问题

jquery - 如何解决此脚本中的 IE ClearType + jQuery 不透明度问题?

javascript - Jquery检测用户交互