停止特定的jQuery动画

sli*_*fty 10 jquery jquery-animate

我在一个对象上有多个动画,我需要停止一个特定的动画而不是所有动画.它看起来不像.stop()方法可以做到这一点.

例如,在同时动画不透明度和宽度时,我可能需要取消不透明度动画,同时仍然完成宽度动画.看起来这是不可能的,但我希望有人知道我缺少的技巧或API调用.

注意:我不是在谈论排队的动画,我希望同时为多个属性设置动画,并且能够在它们已经启动后停止其中一些属性动画

sli*_*fty 8

我讨厌成为一个回答他自己问题的人(非常感谢你的详细反应并将脑力投入其中!)但我找到了一个直接的答案.显然,.animate()方法的参数名为"queue",默认为true,但您可以将其设置为false,以便立即生成动画.

这意味着通过将queue设置为false,您可以使用单独的调用运行多个动画,而无需等待前一个完成.更好的是,如果您尝试为已经设置动画的属性运行动画,则第二个将覆盖第一个.这意味着您可以通过使用队列"false"将其"动画"为当前值并持续时间为0来停止属性的动画.

一个例子:

$myElement = $("#animateElement");
$myElement.animate({width: 500}, {duration: 5000});
$myElement.animate({height: 500}, {duration: 5000, queue: false});
// ... Wait 2 seconds ...
$myElement.animate({width: $myElement.width()}, {duration: 0, queue: false});
Run Code Online (Sandbox Code Playgroud)

另一个选项是由一位优雅的jQuery贡献者提出的,他回复了我的增强请求.它利用了使用阶梯函数上的动画的能力(步骤函数调用在动画中的每一个点,你可以操纵根据你想要的任何标准的动画参数).虽然这也可以解决这个问题,但我觉得它比"queue:false"选项要脏得多.