我正在 d3 中编写一个项目,其中有一个 html 页面,其中包含两个外部 javascript 文件,例如script_1.js and script_2.js.
我需要从 script_1.js 注册一个事件侦听器,从 script_2.js 注册另一个事件侦听器,以用于选择元素上的更改事件。
目前我的 html 中有这一行:
<select id="timebasis" class="selector" onchange="selectIndexSp(this),selectIndexBt(this)">
where selectIndexSp(对象) and selectIndexBt(对象)分别定义在script_1.js和script_2.js中。我根本不喜欢这种方法,我想知道如何在 d3 而不是 html 文件中执行相同的任务,我知道这不是一个好的做法。
提前致谢!
您可以向事件名称添加命名空间,例如:
d3.select("#timebasis")
.on("change.sp", listenersp)
.on("change.bt", listenerbt);
See: https://github.com/mbostock/d3/wiki/Selections#wiki-on https://github.com/mbostock/d3/wiki/Selections#wiki-on
如果事件侦听器已在
所选元素,现有侦听器将在新侦听器之前被删除
监听器已添加。为同一事件注册多个监听器
type,类型后面可以跟一个可选的命名空间,例如
“click.foo”和“click.bar”。要删除侦听器,请传递 null 作为
听众。
函数正在传递当前数据d
和索引i
,与this
context 作为当前 DOM 元素。看起来你的两个函数需要 DOM 元素作为参数?在这种情况下,它看起来像:
d3.select("#timebasis")
.on("change.sp", function() { selectIndexSp(this); })
.on("change.bt", function() { selectIndexBt(this); });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)