jquery回调被多次调用

当我在jQuery中使用淡入淡出/幻灯片/动画函数时,对应用效果的每个元素多次调用回调。 这当然是设计的。 我只是想知道什么时候调用最后一个回调。

这是我想出的 – 它淡出所有div并在最后一次回调被触发时显示alert()。

$("div").fadeOut(1000, function () { if ($("div").index($(this)) == $("div").length-1) alert("this is the final callback"); }); 

有没有更简单的方法来检查哪个回调是最后一个或这是唯一的方法吗?

当调用最后一个元素的fadeOut时,这将产生警报。 这不一定是最后的淡出。

 var numDivs = $('div').length; $('div').fadeOut(1000, function() { if( --numDivs > 0 ) return; alert('this is the final fadeout to complete'); }); 

在JSFiddle上查看它

试试看.promise()的jQuery文档

这应该工作:

 $('div').fadeOut(1000).promise().done(function() { alert('all done'); }); 

通常,关于这个的jQuery文档真的很模糊。 但我不确定我能做到

 $("div:not(:last)").fadeOut(1000); $("div:last").fadeOut(1000, function() { alert("Hey!"); });