jquery - 制作动画时,如何仅在所有元素完成时才触发回调?

标签 jquery animation callback

在 jQuery 中设置动画时,仅当所有元素都完成动画处理而不是每个元素都触发回调的最佳实践是什么?

例如:

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

最佳答案

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

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

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

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

编辑(另一种方式):

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

$('.someElements').not(.someElements:last).fadeOut();

然后添加一个仅带有回调的淡出效果

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

关于jquery - 制作动画时,如何仅在所有元素完成时才触发回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897249/

相关文章:

javascript - UI-Select2 从下拉列表中删除选项?

javascript - jQuery toggleClass 如果不工作

javascript - 为什么 jqgrid formatoption "onClick"会自动加载,而不是在单击单元格时加载?

Jquery 在 IE6 中运行速度非常慢

html - css动画前缀错误

c# - 在 jQuery 中,如何在不显示和显示表(或其视觉等效项)之间设置动画?

css - div 集中式 animate.css

c - ansi c 全局可访问回调

javascript - 如何在 Javascript 循环中触发的回调函数中抛出一次错误?

node.js - 我的回调函数没有被调用