jquery - 等待函数中的所有淡入淡出完成后,才会开始下一个函数

标签 jquery

我已经看过并看到了对此类问题的一些回应,但仍然无法解决这个问题。我有一个函数,有 5 个不同的动画在不同时间完成。我希望这个函数在下一个函数开始之前完全完成其内部函数的动画。

HTML

<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
<div id="div5"></div>
<div id="div6"></div>

CSS

#div1 {
  background-color:red;
  width:100px;
  height:100px;
}
#div2 {
  background-color:blue;
  width:100px;
  height:100px;
}
#div3 {
  background-color:green;
  width:100px;
  height:100px;
}
#div4 {
  background-color:yellow;
  width:100px;
  height:100px;
}
#div5 {
  background-color:orange;
  width:100px;
  height:100px;
}
#div6 {
  background-color:black;
  width:100px;
  height:100px;
  display:none;
}

JQuery/JS

fadeAll(); // I want to wait for all of the fadeOuts in this function to complete before...
$('#div6').fadeIn(); // .. this function starts.

function fadeAll() {
  $('#div1').fadeOut('slow');
  $('#div2').fadeOut('fast');
  $('#div3').fadeOut();
  $('#div4').fadeOut('fast');
  $('#div5').fadeOut();  
}

最佳答案

查看 jQuery 关于 fadeout 的文档。在那里您将看到它可以具有 complete 属性。让我们看看这个例子是否对您有帮助:

var fades = 0;

function fadeOut(context, duration, callback) {
    fades++;
    context.fadeOut(duration, function() {
        fades--;
        if (typeof callback === "function") {
            callback();
        }
    });
}

function fadeAll(callback) {
  fadeOut($("#div1"), 'slow', callback);
  fadeOut($("#div2"), 'fast', callback);
  fadeOut($("#div3"), undefined, callback);
  fadeOut($("#div4"), 'fast', callback);
  fadeOut($("#div5"), undefined, callback);  
}

function fadeCallback() {
    if (fades === 0) {
        $('#div6').fadeIn();
    }
}

fadeAll(fadeCallback);

这里我们有一个计数器来知道我们正在等待多少次淡出。当调用 fadeOut 时,我们会增加此数字,并在此类事件完成时减少此数字。我们在调用回调之前减少它,并且回调会检查该值。如果为0,则调用回调。

关于jquery - 等待函数中的所有淡入淡出完成后,才会开始下一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39020008/

相关文章:

javascript - 如何将 Bootstrap-datepicker 元素与 angularjs ng-model 绑定(bind)?

javascript - 在javascript中从服务器读取.svg文件

jquery - Trent Richardson 时间选择器和日期时间选择器的问题

javascript - 数据表和ajax数据格式化?

jquery - CSS/JQuery : Setting href as background image

jquery - 在 JQuery 中使用 octothorpe (#) 指定对象

javascript - 文本框的值打印为 Undefined

javascript - 当 DOM 动态变化时,如何处理附加 `data-*` 属性的 JavaScript 事件?

jquery - 如何在不使用固定宽度的情况下使内部 DIV 随外部 DIV 的滚动位置移动

javascript - 如何使用jquery获取div中的特定文本