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
这里的问题,我解释了我需要附加事件函数列表的用途。
搜索结果根本没有帮助。
解决方案
您通过评估确定这可能是一个 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
事件的处理程序,并且不会相互注册。
推荐阅读
- azure - 我可以将托管标识添加到我的 ADO 管道吗?
- python - 我在哪里可以找到语法着色(atom、python)的解释?
- xaml - XAML Pop up 在复选框事件上执行两次
- javascript - 无法使用排序功能正确排序 html 元素
- java - XMLUnit-2.0 xpath 不会忽略 XML 节点顺序
- blockchain - 从 r3 corda 应用程序从 v4.3 逐步升级到 4.4
- javascript - 执行块后捕获 Firebase 创建用户错误
- kubernetes - 为什么我的 MongoDB 部署会破坏 minikube(E0413,空 IP)?
- elasticsearch - 如何使用除“_id”之外的任何其他键批量更新弹性搜索文档?
- android - 如何自定义 Android BLE(蓝牙低功耗)gatt 传输速度?