我一直在尝试这么多个小时而无法让它发挥作用。我有一个d3元素可以使用拖动行为拖动,我想添加一个dblclick事件,所以它在双击时执行一个动作。我无法获得dblclick事件。我已经研究了很多方法试图阻止在阻力内传播,并改变事件声明的顺序,到目前为止没有成功。我的代码就像:
switch = box.append('rect')
.data([{x: point.x, y: point.y}])
.attr('transform', function (d) { return 'translate(' + d.x + ',' + d.y + ')'; })
.attr('height', 8)
.attr('width', 8)
.attr('stroke', color)
.attr('fill', color)
.on('dblclick', function () {
d3.event.stopPropagation();
alert('Hello'); // Doesn't enter
}, true).call(d3.behavior.drag().on('dragstart', function () {
d3.event.sourceEvent.stopPropagation();
}).on('drag', function (d) {
d.x += d3.event.dx;
d.y += d3.event.dy;
d3.select(this).attr('transform', 'translate(' + d.x + ',' + d.y + ')');
}).on('dragend', function (d) {
}));
注意on('dblclick',...,true)声明后的“true”。我试图阻止传播。
感谢任何帮助。