如何在 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框架