如果动画 X 已在运行,则不要对 X 进行动画处理(在键控内)



如果msg.d开始从"true"返回"false",则当前的编写方式会导致隐藏反复启动,直到有足够的时间停止动画为止。

有isHiding什么的吗?

提前感谢!

if(msg.d == "true") {
if(!$("#addContactEmailError").is(":visible")) {
$("#addContactEmailError").show('bounce');
}
$("#addContactSubmitButton").attr("disabled", true);
}
else {
if($("#addContactEmailError").is(":visible")) {
$("#addContactEmailError").hide('slide', { direction: "up" });
}
$("#addContactSubmitButton").attr("disabled", false);
}

编辑1

这一切都在一个keyup处理程序中。

编辑2

使用动画仅在动画完成时激发动画。如果消息更改,但现在不正确的动画没有完成,正确的动画将不会启动。

薄片溶液

我使用了一个全局布尔值来跟踪状态。我讨厌那样做。尽我所能提供更好的解决方案。感谢大家!

取消反弹

对不起,伙计们,没有意识到我必须用我自己的代表购买

如果要在动画中间stop一个动画,并使其从stopped css状态移动到另一个状态,请使用最重要的stop(true, false)

一句话:stop(true,false)"神奇地"停止了动画的轨迹,但认为css设置为停止的动画的css参数,因此您可以从该点继续,而无需猜测或弄清楚应该如何从stopped点进行动画。

换言之,如果您通过animate设置css,但您对其进行了stopped,则动画元素将保持在stop激发的任何css状态,但在stopped动画中输入的css设置将是当前的css设置,直到更改为止。

这是关键。您不必猜测stop将css状态遗留在何处。您可以继续返回,就像您的动画完全完成一样。

这是对这一概念的基本说明:http://jsfiddle.net/dYYZP/65/


从这里撕下基础动画:Jquery分层动画从下滑出


Postscript

由于animateabsoluterelative定位、offsetstop(true,false)中的定位很容易,所以我很少使用任何内置动画。它们太笨重了,不知道你真正需要什么。它们非常适合最基本的动画,但如果你想让你的页面闪闪发光,上面的这些概念(我可能会添加这些概念)需要加以利用。

您可以使用动画选择器检查当前是否正在为其设置动画。

http://api.jquery.com/animated-selector/

如上所述,建议使用":animatized"secelector

if(msg.d == "true") {
var contact = $("#addContactEmailError");
if(!contact.is(":visible") && !contact.is(":animated")) {
contact.show('bounce');
}
$("#addContactSubmitButton").attr("disabled", true);
}
else {
if(contact.is(":visible") && !contact.is(":animated")) {
contact.hide('slide', { direction: "up" });
}
$("#addContactSubmitButton").attr("disabled", false);
}

也许您应该在使用hideshow的任何地方使用.stop().hide(.stop.show(

相关内容

  • 没有找到相关文章

最新更新