我有一段代码可以做这样的事情 -
$(selector1).hide(300);
...
...
...
if ($(selector2:visible).length==0)){
$(selector3).show();
}
此处,selector1
是selector2
的子集。我遇到的问题是,尝试使selector3
可见的代码的最后一部分未超过if
,因为$(selector2:visible).length
不为零。这是因为selector1
仍在动画中。如果我等待300ms完成动画,代码应该可以正常工作。我不能使用完成回调函数 - 我的代码太复杂了。如何在这种情况下让$(selector3).show()
工作?
我的解决方法是使用 -
if (($(selector2:visible).length-($(selector2:animated).length)==0)){
$(selector3).show();
}
但这似乎是一个可能破解的代码。我相信,如果我能确保动画元素最终不可见,我可以安全地触发$(selector3).show();
。有没有办法知道当前正在运行的动画元素的最终状态?
答案 0 :(得分:1)
您可以使用承诺:
$(selector1).hide(300).promise().done(function(){
$(selector3).show();
}