2011-06-15 82 views
2

我使用Raphael JS创建一个带有区域和文本标签的SVG地图。当您将鼠标移动到该区域上时,我希望该区域突出显示。Raphael JS:mouseover/mouseout - 文本标签问题

我现在有这个工作,但是当我将鼠标移动到标签上(在该区域的中心)时,该区域的鼠标事件被触发,所以该区域再次不被注意。

有没有什么办法可以防止这种情况发生或解决方法?

+0

我使用带** mousenter **和** mouseleave **的jQuery,它“对SVG来说工作得很好”(使用'raphaelElement.node')。它可能会或可能不会与IE/VML一起使用。 – 2012-12-30 01:41:05

回答

5

在文本上创建一个不透明度设置为0的矩形,并在该矩形上附加事件处理程序。您可以使用文本的getBBox()来计算矩形的尺寸。

+0

该区域是多边形,所以矩形不够好。但是我发现我可以使用set来做这件事。我创建了一组每个区域+标签,并将事件处理程序附加到该集合,而不是该区域 – Dylan 2011-06-16 09:53:19

2

通过Paper#set创建一个集合是我工作的方法。例如:

var st = paper.set(); 

st.push.apply(st, vectors); // `vectors`: my array of "hoverable" vectors 
st.push(text);    // `text`: my text vector for `vectors` 

st.hover(function() { 
    text.show(); 
}, function() { 
    text.hide(); 
});