【发布时间】:2016-09-23 17:34:33
【问题描述】:
我正在使用svg 元素创建一个图表。我正在对它们应用事件处理程序。事件按预期工作,但我有一个问题,因为有时其中一个元素直接位于另一个元素之上,所以当底部元素的事件应该被触发时,它不是。如果你看下面的图片,我有一个 rect 和一个 zoom 事件。缩放event 在mouse-wheel 发生在rect 上时触发,但当圆圈覆盖它时,不会触发事件。我必须将circles 放在rect 之上,以便在需要时可以单击它们。我怎么可能绕过这个问题。我尝试在SO 上搜索解决方案,但找不到与此问题相关的任何内容。
我有一个显示圆圈的JSFiddle。如果您缩放圆圈以外的任何其他位置,则会触发缩放行为,但如果您尝试在圆圈顶部进行缩放,则缩放行为将不起作用。
【问题讨论】:
-
能否将鼠标滚轮事件绑定到整个页面,然后检查鼠标指针是否在'rect'边界上?
-
您是否尝试过注册放大圈子?
-
不,我没有……嗯……让我看看
-
@JuanMendes
rect有一个特殊的zoom行为由d3赋予它,我不确定如果应用于每个圈子它会起作用 -
仅在选定的圈子上使用
pointer-events:none不起作用吗?单击曲线以突出显示其他圆圈仍然有效。我目前在所选圆圈上看不到任何悬停/单击功能。
标签: javascript html d3.js svg