通过使用不同的选择器选择元素,为元素提供多个事件处理程序
Giving an element more than one event handler by selecting it using different selectors
我有几个"event"类,涵盖了我的一些svg元素。我为每个类分配一个mouseover
和mouseout
的事件处理程序,如果一个元素有多个类,我希望两个处理程序都激发。我该怎么做?当我做的时候
d3.selectAll(".a-class")
.on("mouseover", function() {
// do A
})
.etc();
d3.selectAll(".another-class")
.on("mouseover", function() {
// do B
})
.etc();
然后,当我将鼠标悬停在一个同时具有两个类的元素上时,只有B
(第二个处理程序)会触发,显然是因为它覆盖了第一个。有没有一种方法可以"附加"事件处理程序,而不是重新定义它?
根据文档。。。
如果已在选定元素上为相同类型注册了事件侦听器,则在添加新侦听器之前,将删除现有侦听器。要为同一事件类型注册多个侦听器,该类型后面可以跟一个可选的名称空间,如"click.foo"answers"click.bar"。
因此,您可以通过向每个处理程序附加一个任意名称空间来实现所需的功能。
d3.selectAll(".a-class")
.on("mouseover.a", function() {
// do A
})
.etc();
d3.selectAll(".another-class")
.on("mouseover.b", function() {
// do B
})
.etc();
这还有一个额外的优点,即以后可以显式引用添加的事件处理程序(单独引用或针对整个命名空间引用)来替换或删除它们。
相关文章:
- 在MVVM视图模型中处理应用程序范围的元素
- 如何在引导程序元素的顶部添加掩码
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 用于各个元素的Ajax加载程序
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 如何使用角度事件处理程序引用输入元素的值
- 如何在AJAX驱动的应用程序中优化元素绑定
- 如何在另一个 html 标签内选择 web 元素硒 Web 驱动程序与 html 源
- 基于类附加点击处理程序,只要元素获得该类
- Meteor - 从另一个模板事件处理程序访问 DOM 元素
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 在动态创建的元素中包含参数的事件处理程序
- 一个轮播页面引导程序中的多个元素
- 测试 JavaScript Zombie 事件处理程序或 DOM 元素
- 原型js 如何使定期更新程序隐藏基于ajax响应的类元素
- 元素单击处理程序由一个神秘的函数取消设置
- 有没有办法用Javascript找到元素的事件处理程序
- 转换元素在引导程序中不起作用
- 用于逐步增强的“select”元素的JavaScript中的事件处理程序
- 安装后以程序方式关注形状元素