d3js鼠标移动事件没有冒泡
d3js mousemove event is not bubbling
我有一个类似于以下的svg结构:
<svg>
<g id="main-group">
...
<rect id="event-rect"></rect>
</g>
</svg>
并且我已经将相同的事件附加到#事件rect和#主组
d3.select('#event-rect').on('mousemove', clb);
d3.select('#main-group').on('mousemove', clb2);
这里的问题是,第一个clb被触发,而父节点(即#main group)的事件侦听器没有被触发。
为什么事件冒泡阶段在这里不起作用?
实际使用的代码是:
d3.select('#event-rect').on('mousedown', mousedown);
d3.select('#event-rect').on('mousemove', mousemove);
d3.select('#event-rect').on('mouseup', mouseup);
然后在另一个模块中,我附加了相同的事件集:
d3.select('#main-group').on('mousedown', dragStart);
d3.select('#main-group').on('mousemove', mousemove);
d3.select('#main-group').on('mouseup', dragEnd);
除了dragStart之外,所有回调都被调用。我对我来说没有任何意义
如果元素的尺寸相同,则g
元素将被rect
遮挡。根据你想做什么,有几个选择。
- 您可以增加
g
元素的大小,以便在鼠标刚离开rect
时触发事件 - 您可以完全删除
g
元素的侦听器,并在rect
的处理程序中执行其操作 - 类似地,您可以从
rect
元素中删除侦听器,并为g
元素处理侦听器中的所有内容
相关文章:
- JsFiddle上的鼠标事件不起作用
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- node-webkit-从父窗口捕获iframe鼠标事件
- 如何在jquery中找到鼠标滚轮/触摸移动事件的走向
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 鼠标事件在OpenLaszlo应用程序中不起作用
- 为画布绘图添加鼠标事件
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- KineticJS鼠标事件问题
- 捕获鼠标关闭事件并在 Mozilla 中获取 clientX 和 clientY
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 如果鼠标在元素上快速移动和关闭,则防止.hoop事件被垃圾邮件发送
- 如何在asp:linkButton上显示鼠标悬停事件上的图像
- GWT-允许鼠标事件在两个叠加画布之间传播
- 为什么不是't html<对象>元素响应鼠标事件
- 如何恢复Kinetic.js鼠标事件
- 鼠标事件's在CtrlKey不起作用的情况下单击
- 必须更改单击事件鼠标输入鼠标输出事件
- 当一个标记位于打开的infobox -事件鼠标悬停与infobox插件谷歌地图API v3
- 带有按钮的鼠标事件:鼠标悬停、onclick、静态