2
我具有类似于下面的SVG结构:d3js鼠标移动事件不冒泡
<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。我对我没有任何意义
是的,但事件冒泡怎么样。不应该将mousemove事件提升到其父节点?我认为这就是普通的dom元素如何行动 – ppoliani
啊,是的,对不起,我误解了你的问题。这对我来说工作正常 - 你可以发布完整的代码吗? –
对不起,我犯了一个错误。我对'mousedown'事件有问题。 mousemove事件也为我冒泡。 – ppoliani