如何在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根本没用。
答案 0 :(得分:4)
你的评估认为这可能是一个XY问题!对于您要实现的目标,您不需要已注册的事件处理程序列表。 D3已经提供了通过允许您提供自定义名称/命名空间来将多个处理程序分配给单个事件类型的方法。 selection.on()
的规范有它(强调我的):
该类型可以选择后跟句点(
.
)和名称;可选名称允许注册多个回调以接收相同类型的事件,例如click.foo
和click.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
事件的处理程序,并且不会彼此相关。