我有一个网页,使用

$(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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top