动画时,只有当所有元素都完成时才会触发回调?

Mar*_*erg 6 jquery animation callback

在jQuery中制作动画时,只有当所有元素都完成动画而不是每个元素时才会触发回调的最佳做法是什么?

例如:

$('.someElements').fadeOut('fast', function() {
  // dont do this until ALL elements are done fading
}
Run Code Online (Sandbox Code Playgroud)

mic*_*ino 4

这可能是一个值得尝试的片段:

var numberOfElements = $('.someElements').length;

$('.someElements').fadeOut(fast, function() {
  if( numberOfElements-- > 0 ) return;
  alert('call the Fireman!'); 
});
Run Code Online (Sandbox Code Playgroud)

警报只是您需要触发的结束回调的占位符。

编辑(另一种方式):

您还可以捕获所有元素,但不能捕获最后一个。

$('.someElements').not(.someElements:last).fadeOut();
Run Code Online (Sandbox Code Playgroud)

然后添加一个仅带有回调的 fadeOut 到 It

$('.someElements:last').fadeOut(fast, function (){ 
   // do something, it's the end of the world
};
Run Code Online (Sandbox Code Playgroud)