【问题标题】:How do I stop an effect in jQuery如何在 jQuery 中停止效果
【发布时间】:2010-09-08 18:17:57
【问题描述】:

我有一个页面使用

$(id).show("highlight", {}, 2000);

在我启动 ajax 请求时突出显示一个元素,这可能会失败,所以我想使用类似的东西

$(id).show("highlight", {color: "#FF0000"}, 2000);

在错误处理程序中。问题是,如果第一个亮点还没有完成,第二个将被放入队列中,并且在第一个准备好之前不会运行。因此问题是:我能以某种方式停止第一个效果吗?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    我将此列为已接受答案的评论,但我认为将其作为独立答案发布是个好主意,因为它似乎可以帮助一些遇到.stop() 问题的人


    仅供参考 - 我也在寻找这个答案(试图停止脉冲效应),但我的代码中确实有一个 .stop()

    查看文档后,我需要.stop(true, true)

    【讨论】:

    • 我爱你,伙计! :) 为我节省了很多时间。
    • @DimitarDimitrov 回到你身边。编码愉快。
    • 这正是我想要做的,我想大多数人都希望诚实地解决,谢谢。
    【解决方案2】:

    来自 jQuery 文档:

    http://docs.jquery.com/Effects/stop

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

    当在元素上调用.stop() 时,当前正在运行的动画(如果有)会立即停止。例如,如果在调用.stop() 时使用.slideUp() 隐藏元素,则该元素现在仍将显示,但将是其先前高度的一小部分。不调用回调函数。

    如果在同一个元素上调用了多个动画方法,则后面的动画将放置在该元素的效果队列中。在第一个动画完成之前,这些动画不会开始。当.stop() 被调用时,队列中的下一个动画立即开始。如果为clearQueue 参数提供了true 的值,则队列中的其余动画将被移除并且永远不会运行。

    如果 jumpToEnd 参数的值为 true,则当前动画停止,但元素会立即为其每个 CSS 属性指定目标值。在我们上面的.slideUp() 示例中,该元素将立即被隐藏。如果提供了回调函数,则会立即调用...

    【讨论】:

    • 仅供参考 - 我也在寻找这个答案(试图阻止脉冲效应),但我的代码中确实有一个 .stop()。查看文档后,我需要.stop(true, true)
    • @Dutchie432:你准确地描述了我正在寻找的东西......我也在使用脉动效果。我有一个.stop(),但它没有用。现在它按预期工作。评论能做什么?这也是一个答案... :D 搜索外包很有趣 :o)
    【解决方案3】:

    .stop(true,true) 将冻结效果,因此如果它当时不可见,则它仍然不可见。如果您使用脉动效应,这可能是个问题。

    $('#identifier').effect("pulsate", {times:5}, 1000);
    

    为了解决这个问题,我添加了

    $('#identifier').stop(true, true).effect("pulsate", { times: 1 }, 1);
    

    【讨论】:

      【解决方案4】:

      在我的情况下,使用下面的代码不起作用并保持你的不透明度值:

      $('#identifier').stop(true, true).effect("pulsate", { times: 1 }, 1);
      

      对我来说,只需删除不透明度即可:

      $('#identifier').stop(true, true).css('opacity','');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 2012-02-21
        • 1970-01-01
        相关资源
        最近更新 更多