【发布时间】:2017-02-13 18:53:37
【问题描述】:
我有一个包含许多形状的 D3 (v4) 可视化,在某些情况下,它们会在大约三秒的过程中动画到新的位置。这些形状具有单击和鼠标悬停事件侦听器,我希望仅在可视化不移动时才处于活动状态。
实现这一点的天真方法很简单。我有一个名为 is_animating 的布尔变量,在动画开始时设置为 true,在回调时设置为 false,所以我只是将它添加到事件侦听器中:
shapes.on("click", function(d) {
if (is_animating) {
return;
}
// otherwise, business as usual
})
这很好,但是我计划向形状添加大量事件侦听器,如果有更优雅的方法来拦截冒泡中较高的事件并且只执行一次而不是将此检查添加到每个事件。但我不完全理解d3.event 以及它如何处理冒泡。是否有一个简单的“主事件监听器”,如果你愿意,它会在用户尝试做某事时触发,如果is_animating 为真,这可能会使事件短路?
【问题讨论】:
标签: javascript d3.js events dom-events event-bubbling