获取d3.js中的事件函数

时间:2018-05-30 17:48:29

标签: javascript 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问题,我解释了我需要的附加事件函数列表。

搜索results根本没用。

1 个答案:

答案 0 :(得分:4)

你的评估认为这可能是一个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事件的处理程序,并且不会彼此相关。