题
我有一个网页,使用
$(id).show("highlight", {}, 2000);
突出的一个元素,当我开始的ajax请求,这可能会失败,因此,我想用一样的东西
$(id).show("highlight", {color: "#FF0000"}, 2000);
在错误的处理程序。问题是,如果第一个突出还没有完成,第二放在一个队列并不会运行,直到第一个是准备。因此,这个问题:我可以以某种方式停止的第一个效果?
解决方案
从s文档:
http://docs.jquery.com/Effects/stop
停止目前运行的动画上的匹配元素。...
时
.stop()
被称为上一个元素,目前运行的动画(如果有的话)立即停止。例如,如果一个元件是被隐藏.slideUp()
时.stop()
是,元件现在仍然显示的,但将一小部分先前的高度。回呼功能不叫。如果多于一个动画方法是呼吁相同的元素,以后的动画都放在影响队列为要件。这些动画不会开始,直至第一个完成。时
.stop()
是所谓的,下一个画在队列中立即开始。如果的clearQueue
参数提供了有价值的true
, 然后其余的动画在队列中去除并永远不会运行。如果的
jumpToEnd
论提供有价值的真实的,目前的动画停止,但件是立即给予它的目标值为每个CSS财产。在我们上面.slideUp()
例如,元件将立即隐藏。回呼功能是随后立即称,如果提供的话...
其他提示
我列出这一意见对于接受的答案,但我认为这将是一个好主意,以后它作为一个独立的解答,因为它似乎是帮助一些人有问题 .stop()
FYI-我在找这答案,以及(在试图停止跳动的效果),但是我没有 .stop()
在我的代码。
在审查了文档,我需要 .stop(true, true)
.停止(true,true) 将冻结的效果如果它是隐形的时间,那么它仍然是看不见的。这可能是一个问题,如果您使用的搏动的效果。
$('#identifier').effect("pulsate", {times:5}, 1000);
为了解决这个我加入
$('#identifier').stop(true, true).effect("pulsate", { times: 1 }, 1);