首页 > 解决方案 > 获取 d3.js 中的事件函数

问题描述

我怎样才能获得事件功能d3.js

例如,有人写了代码:

var handleRelease = function() {
   console.log("hello world");
}
var foo = d3.select("#foo").on("mouseup", handleRelease);

现在我想添加我自己的函数,以便在foo发布时调用。在不破坏其他人代码的情况下,我将如何做到这一点?我的意思是,如果我写:

var myFunction = function() {
   console.log("bye, bye");
}
foo.on("mouseup", myFunction);

handleRelease现在不会调用该函数。

所以,为了避免x-y这里的问题,我解释了我需要附加事件函数列表的用途。

搜索结果根本没有帮助。

标签: javascriptd3.js

解决方案


您通过评估确定这可能是一个 XY 问题!对于您要实现的目标,您不需要已注册事件处理程序的列表。通过允许您提供自定义名称/命名空间,D3 已经提供了将多个处理程序分配给单个事件类型的方法。有它的规范selection.on()(强调我的):

类型可以选择后跟句点 ( .) 和名称;可选名称允许注册多个回调以接收相同类型的事件,例如click.fooclick.bar

对于您的代码,这可能是这样的:

var handleRelease = function() {
   console.log("hello world");
}
var foo = d3.select("#foo").on("mouseup.handleRelease", handleRelease);

var myFunction = function() {
   console.log("bye, bye");
}
foo.on("mouseup.myFunction", myFunction);

然后,这两个函数都独立注册为mouseup事件的处理程序,并且不会相互注册。


推荐阅读