如何找到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标记出现时。网页的其他幻灯片也使用相同的过滤机制。因此,我不知道检查了多少过滤器,有多少过滤器是清除的:-(除非我尝试将状态保存在某个数据状态
自定义属性中(我应该这样做吗?)。这太复杂了,不能作为一个摆弄来使用