javascript - Jquery - 推迟回调直到多个动画完成

标签 javascript jquery animation callback

我需要在多个元素完成动画处理后执行一次回调。 我的 jquery 选择器如下:

$('.buttons').fadeIn('fast',function() {
   // my callback
});

这样做的问题是,按钮类匹配了许多元素,所有这些元素都需要在执行回调之前淡入。就目前而言,回调是在每个单独的元素完成动画后执行的。这不是所需的功能。我正在寻找一种优雅的解决方案,以便我的回调仅在所有匹配的元素完成动画处理后执行一次。这个问题在包括 SO 在内的一些地方出现过,但从来没有一个优雅的答案(甚至没有一个明确的答案——适用于一个人的解决方案对其他人根本不起作用)。

最佳答案

jQuery 引入了 promise在 1.6 版本中,比添加计数器要优雅得多。

示例:

// Step 1: Make your animation
$(".buttons").each(function() {
    $(this).fadeIn("fast");
});

// Step 2: Attach a promise to be called once animation is complete
$(".buttons").promise().done(function() {
    // my callback
});

关于javascript - Jquery - 推迟回调直到多个动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220878/

相关文章:

javascript - 使用正则表达式从逗号分隔列表中删除值

javascript - 为什么 jQuery 语法如此奇怪——它是如何被解析的?

jquery - 这对浏览器造成了多大的困惑?

python - 如何使用嵌套循环为函数设置动画?

javascript - React 如何在 componentWillUnmount 中正确移除监听器,为什么我需要在构造函数中绑定(bind)?

javascript - 为什么我应该使用 goog.ui.Checkbox 而不是常规输入?

JavaScript 等待所有异步调用完成

javascript - 成功功能在ajax中不起作用

javascript - 在 Jquery 中动画后更改图像 Src

html - 将 Canvas 导出到视频