单击拉斐尔中的路径

Click through path in Raphael

我定义了一个包含多个元素的不透明度为 0 的路径。这样做的目的是因为当鼠标在该路径上时,该元素出现(或者如果我们离开该路径则消失)。我的问题是因为路径位于 canvas 之上,我无法单击那些元素并期望能够处理事件。

处理该问题的最佳策略是什么?

您可以在每个元素上放置处理程序,并以这种方式处理它。如果使用 Snap 而不是 Raphael 甚至可能会稍微容易一些,因为那时您可以使用组(并且不需要多个事件处理程序),但假设 Raphael 是您可以这样做的要求...

var r = paper.rect(50,50,200,200).attr({ fill: 'blue', opacity: '0'}).hover( hoverover, hoverout )
var c1 = paper.circle(100,100,30).attr({ fill: 'red' }).click( clickFunc ).hover( hoverover, hoverout)
var c2 = paper.circle(200,200,30).attr({ fill: 'blue' }).click( clickFunc ).hover( hoverover, hoverout )

function hoverover() { r.attr({ opacity: 1 } ) }
function hoverout()  { r.attr({ opacity: 0 } ) }
function clickFunc() { alert('clicked')}

jsfiddle