如何找到jQuery动画的最终状态?

如何找到jQuery动画的最终状态?,jquery,jquery-animate,Jquery,Jquery Animate,我有一段代码可以这样做- $(selector1).hide(300); ... ... ... if ($(selector2:visible).length==0)){ $(selector3).show(); } 这里,selector1是selector2的子集。我遇到的问题是,试图使selector3可见的代码的最后一部分没有通过ifas$(selector2:visible)。长度不是零。这是因为selector1仍处于动画状态。如果我等待300毫秒动画完成,代码将正常工作。

我有一段代码可以这样做-

$(selector1).hide(300);
...
...
...
if ($(selector2:visible).length==0)){
   $(selector3).show();
}
这里,
selector1
selector2
的子集。我遇到的问题是,试图使
selector3
可见的代码的最后一部分没有通过
if
as
$(selector2:visible)。长度
不是零。这是因为
selector1
仍处于动画状态。如果我等待300毫秒动画完成,代码将正常工作。我不能使用完成回调函数——我的代码太复杂了。如何使
$(selector3.show()
在这些情况下工作

我的解决方法是使用-

if (($(selector2:visible).length-($(selector2:animated).length)==0)){
   $(selector3).show();
}
但这似乎是一个可能被破解的密码。我相信,如果我能确保被设置动画的元素最终是不可见的,我就可以安全地触发
$(selector3.show()。有没有办法知道当前正在运行的动画元素的最终状态?

您可以使用以下选项:

$(selector1).hide(300).promise().done(function(){
    $(selector3).show();
}

很高兴知道这一点,但我有多个
$(selectorX)。按
if…else
的顺序隐藏(300)
。我的实际if语句是
if(SomeVar==0&($(selector2:visible).length-($(selector2:animated).length==0))
SomeVar
是在
.hide(300)
行之后计算的。因此,将
SomeVar
计算放在每个promise回调中似乎有点过头了。不确定你的确切意思是什么,你有一系列动画,还是它们是平行的?它看起来更平行-看这是一个吹嘘点列表。您可以在右上角使用brag过滤器。如果您过滤掉所有内容,将显示一个带有消息的标签。问题是当最后一组点消失,p标记出现时。网页的其他幻灯片也使用相同的过滤机制。因此,我不知道检查了多少过滤器,有多少过滤器是清除的:-(除非我尝试将状态保存在某个
数据状态
自定义属性中(我应该这样做吗?)。这太复杂了,不能作为一个摆弄来使用