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

时间:2014-02-22 01:25:10

标签: jquery jquery-animate

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

$(selector1).hide(300);
...
...
...
if ($(selector2:visible).length==0)){
   $(selector3).show();
}

此处,selector1selector2的子集。我遇到的问题是,尝试使selector3可见的代码的最后一部分未超过if,因为$(selector2:visible).length不为零。这是因为selector1仍在动画中。如果我等待300ms完成动画,代码应该可以正常工作。我不能使用完成回调函数 - 我的代码太复杂了。如何在这种情况下让$(selector3).show()工作?

我的解决方法是使用 -

if (($(selector2:visible).length-($(selector2:animated).length)==0)){
   $(selector3).show();
}

但这似乎是一个可能破解的代码。我相信,如果我能确保动画元素最终不可见,我可以安全地触发$(selector3).show();。有没有办法知道当前正在运行的动画元素的最终状态?

1 个答案:

答案 0 :(得分:1)

您可以使用承诺:

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