D3 - 在另一个事件中绑定事件

时间:2014-11-23 06:55:00

标签: javascript d3.js

以下是一些代码,用于创建Scott Murray的书" Web的互动数据可视化"。该代码允许生成,更新(添加/删除)和排序条形图。除了我无法使用排序按钮工作之外它完美地工作。我知道sort函数有效,因为我已经将click事件(运行sort函数)附加到每个bar。因此,当单击一个条形时,条形图将被排序。

这是JSfiddle - http://jsfiddle.net/kiniadit/k812fo53/3/

以下是不起作用的代码段(第74-77行)

else if(btnClass == "sort"){
    sortBars();
    sortLabels();
}

1 个答案:

答案 0 :(得分:1)

问题在于您为点击事件设置处理程序功能的方式。您正在选择所有按钮并附加一个内部确定要执行的操作的处理程序。该处理程序运行代码以更新所有按钮的条形图,无论之前发生了什么。

在您的特定情况下,这意味着排序正确完成并设置了相应的转换,但随后由更新条形码的代码立即取消(以处理添加/删除的值)。在这种情况下,这不会做任何事情,因此唯一的效果是取消排序处理程序设置的所有内容。

要修复,只需在调用排序函数后退出该函数:

return;

完整演示here