Javascript 在重叠元素上注册鼠标事件
在我的svg图像中,我绘制了许多路径(和其他元素),其中一些部分是透明的,可能相互重叠 如何确保所有元素的侦听器接收到鼠标事件(如单击),而不仅仅是最上面的元素 基本示例(假设A、B、C具有相同的坐标和尺寸):Javascript 在重叠元素上注册鼠标事件,javascript,svg,d3.js,mouseevent,Javascript,Svg,D3.js,Mouseevent,在我的svg图像中,我绘制了许多路径(和其他元素),其中一些部分是透明的,可能相互重叠 如何确保所有元素的侦听器接收到鼠标事件(如单击),而不仅仅是最上面的元素 基本示例(假设A、B、C具有相同的坐标和尺寸): 在本例中,期望的结果是侦听器在a、B、C上注册单击矩形C(最上面的) 通过使用google,我了解到我可以通过向父元素注册一个侦听器,然后检查受影响的子元素来发送事件,但是我想知道是否有更好的解决方案或库。使用jquery++可以找到哪些元素位于给定位置,即使它们位于其他元素之后,你
在本例中,期望的结果是侦听器在a、B、C上注册单击矩形C(最上面的)
通过使用google,我了解到我可以通过向父元素注册一个侦听器,然后检查受影响的子元素来发送事件,但是我想知道是否有更好的解决方案或库。使用jquery++可以找到哪些元素位于给定位置,即使它们位于其他元素之后,你可以做一些简单的事情,比如:
$("#parent").on("click",function(ev){
$(this).children().within(ev.offsetX,ev.offsetY)...; //filter the elements
});
AFAIK这是唯一的解决方案。如果较低的元素被其他元素重叠,那么它们将无法获得单击事件。我看到了这个库,但还没有机会尝试它。这可能很合适。这是个好主意,但我一直无法在SVG工作。查看他们的示例并与我的版本进行比较,我只使用SVG矩形替换了div:我认为您需要在函数中传递事件对象。
$("#parent").on("click",function(ev){
$(this).children().within(ev.offsetX,ev.offsetY)...; //filter the elements
});