如何在 jQuery 中停止效果

Posted

技术标签:

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

我有一个页面使用

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

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

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

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

【问题讨论】:

【参考方案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','');

【讨论】:

以上是关于如何在 jQuery 中停止效果的主要内容,如果未能解决你的问题,请参考以下文章

对于jQuery选择器和动画效果停止动画的实战心得前端jQuery框架

jquery如何animate防止叠加 例如我把鼠标不断移入移出 效果就会不断重复,如何防止呢?

jQuery:停止在多次翻转时重复动画?

如何在jquery中停止Ajax调用[重复]

如何在jQuery中停止动画,但是当动画首先完成时

如何在 jQuery 中启动和停止音频文件?