【发布时间】:2013-11-24 22:20:38
【问题描述】:
我有一个带有重叠元素的 SVG,绝对定位。元素包含在层中(使用 SVG g)标签,因此可能并不总是有一个共同的父级。
在 D3 中,元素可以响应它们捕获的点击事件。但是,重叠元素会阻止底部元素捕获任何点击事件。 (由于我的应用程序的设计,我不能随意更改它们的 DOM 顺序 - 这很重要。)我想知道是否有办法在保留拖动事件的同时通过元素传递点击事件 - 几乎就像“抛出" 事件,如果可能的话。
由于我仍然需要拖动事件和其他指针事件,我不能使用“pointer-events: none”属性。此外,由于这些元素可能没有共同的祖先,因此我无法真正以这种方式遍历元素。
我想要的行为是切换 - 单击形状将调用形状的单击处理程序,然后选择该形状。单击所选形状(如果它与另一个形状重叠)将调用所选形状的单击处理程序,该处理程序将“抛出”单击事件,以便它将传递到底层元素。 (可能使用d3.event.throw 或return d3.event 之类的东西,或者类似的想法)。
这可能吗?
【问题讨论】:
标签: javascript d3.js dom svg dom-events