Javascript d3js mousemove事件未冒泡

Javascript d3js mousemove事件未冒泡,javascript,events,d3.js,event-bubbling,Javascript,Events,D3.js,Event Bubbling,我有一个类似于以下内容的svg结构: <svg> <g id="main-group"> ... <rect id="event-rect"></rect> </g> </svg> 这里的问题是,第一个clb被触发,而父节点(即#主组)的事件侦听器未被触发 为什么事件冒泡阶段在这里不起作用 实际使用的代码是: d3.select('#event-rect').on('mousedown'

我有一个类似于以下内容的svg结构:

<svg>
   <g id="main-group">
     ...
      <rect id="event-rect"></rect>
   </g>
</svg>
这里的问题是,第一个clb被触发,而父节点(即#主组)的事件侦听器未被触发

为什么事件冒泡阶段在这里不起作用

实际使用的代码是:

 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
    元素侦听器中的所有内容

是的,但事件冒泡如何。mousemove事件不应该升级到其父节点吗?我想这就是普通的dom元素actAh是的,对不起,我误解了你的问题。这对我来说很好——你能发布完整的代码吗?对不起,我弄错了。我对“mousedown”事件有问题。mousemove事件对我来说也有泡沫。你确定mousemove工作正常吗。我看了一下源代码,发现d3js调用了d3_eventCancel()方法,而d3_eventCancel()方法又调用了d3.event.stopPropagation();不客气。不过,我建议删除这个问题,以避免让搜索类似内容的人感到困惑。
 d3.select('#main-group').on('mousedown', dragStart);
 d3.select('#main-group').on('mousemove', mousemove);
 d3.select('#main-group').on('mouseup', dragEnd);