javascript - `callback` 完成后如何调用 `transition` 函数?

标签 javascript jquery d3.js

我想在所有 transition 结束后调用我的 callback。但我没有。从每个 transition 结束回调的时间。如何结合所有这些并在最后进行回调?

这是我的代码:

var fadeHandler = function() {
  var myCallback = function() {
    $.event.trigger('showMenu');
    //this is called 6 times
    // how to get single time call back after completing all 6 transitions?
  }

  d3.selectAll('.subAppGroup .subAppPath, .subAppGroup .subAppGroupDetail') //parent group 6 no.s
    .transition()
    .delay(function(d, i) {
      return i * 500;
    })
    .duration(500)
    .style('opacity', 1)
    .each("end", myCallback); //this is called 6 times

}
fadeHandler();

最佳答案

我不确定这是否是解决问题的最佳方法,但它确实有效。

var fadeHandler = function () {
    var items = d3.selectAll('.subAppGroup .subAppPath, .subAppGroup .subAppGroupDetail'),
        todo = items.size();
    
    items
    .transition()
    .delay(function (d, i) {
        return i * 500;
    })
    .duration(500)
    .style('opacity', 1)
    .each("end", function () {
        todo--;
        if (todo === 0) {
            // $.event.trigger('showMenu');
            $("#allDone").fadeIn();
        }
    });
};

fadeHandler();
.subAppGroup * {
    float: left;
    width: 50px;
    height: 50px;
    opacity: 0.2;
    margin: 4px;
}
.subAppPath {
    background-color: red;
}
.subAppGroupDetail {
    background-color: blue;
}
#allDone {
    display: none;
    clear: both;
    margin: 4px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

<div class="subAppGroup">
    <div class="subAppPath"></div>
    <div class="subAppGroupDetail"></div>
    <div class="subAppPath"></div>
    <div class="subAppGroupDetail"></div>
    <div class="subAppPath"></div>
    <div class="subAppGroupDetail"></div>
</div>
<div id="allDone">All done!</div>

关于javascript - `callback` 完成后如何调用 `transition` 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420357/

相关文章:

javascript - 在 keyup 上添加 2 个输入值以在第 3 个输入框中获得答案

javascript - 使用 Chrome 存储而不是本地存储创建 Parse session

javascript - 如何在组合框中获取选定的值?

jQuery resizable() 对象不会缩回

java - ajax javascript 复选框更改不起作用

javascript - javascript 中回调的代码流程

javascript - D3 补间 - 暂停和恢复控件

javascript - 如何在使用 d3.behavior.zoom() 平移时删除 "jumpiness"

javascript - 在 WP7 上存储数据?

javascript - 将多个字段的值传递给jquery