请看我的小提琴:http://jsfiddle.net/haiphong/BRjFE/
您可以按住SHIFT,然后拖放矩形以移动它和周围的圆圈。您也可以按住SHIFT和缩放。此缩放/平移由d3.behavior.zoom()
完成。效果很好。
我想在不保持移位的情况下缩放和平移圆圈。所以,我创建了另一个d3.behavior.zoom()
。但是,圆圈可以缩放但不能平移。通过调试,我看到当我平移圆圈时,处理代码不会执行。
总而言之,当将zoom
绑定到外部g
元素和内部g
元素时,外部适用于缩放/平移;但是,内部仅适用于缩放。如何让它也适用于平底锅?
答案 0 :(得分:0)
我找到了答案的解决方案。 http://jsfiddle.net/haiphong/BRjFE/4/
当我平移圆圈时,其zoom
事件不会触发。但是,它的zoomstart
事件会触发,并在其父项zoomstart
之前触发。不知何故,当父母的zoomstart
开火时,它会吃掉圆圈的事件。
因此,在圆圈的zoomstart
中,我强制事件在SHIFT未被保持时停止传播。这会使圈zoom
触发。