我有一个动画淡出的列表。完成后我想运行一些代码,但想要运行一次代码,而不是每次列表中的每个元素都完成动画。必须在ALL动画完成并且已删除所有li
后运行代码。这是我目前的代码:
$(".myclass li").animate({'opacity':'0', 'height':'0%'}, function(){
$(this).remove(); //This is run for every "li" which is fine...
function() { /* I want to now run this code only once AFTER all animation has finished */ }
});
答案 0 :(得分:4)
$ .queue()可以帮助你解决这个问题。 http://api.jquery.com/queue/
$(".myclass li").animate({'opacity':'0', 'height':'0%'},{"queue":true});
$(".myclass li:last-child").queue(function() {
/* The code you want to run */
});
答案 1 :(得分:1)
一种可能的解决方案是:
var elts=$$(".myclass li"),
num=elts.length,
onComplete=function() {
...
};
elts.animate({....}, function(){
$(this).remove();
if(--num === 0 && onComplete) {
onComplete();
}
});