这是一个非常具体且有些复杂的问题,因此我已经设置了一个最小测试用例,在阅读其余内容之前,您应该先查看它。
我有一个页面,通过Raphaël在悬停时显示带有高亮区域的图像。我还在努力添加Tipsy工具提示到这些悬停中,以便您可以看到每个图像部分的名称。
Raphaël使用SVG绘制高亮区域,由于SVG元素也是DOM节点,因此将Tipsy附加到它们很容易实现,如下所示:
// Get the path node as a jQuery object.
pathNode = $(path.node);
// Set the title so it's available to tipsy.
pathNode.attr('title', element.title);
// Add a Tipsy tooltip to each node, if Tipsy is loaded.
if ($.fn.tipsy) {
pathNode.tipsy({
fade: true
});
}
问题的症结在于,Tipsy将工具提示绘制在屏幕顶部(坐标为0,0),而不是在SVG节点旁边。我无法弄清楚如何修复它。调试Tipsy JavaScript时,它似乎在某个时候有了坐标,但仍然无法在正确的位置绘制。有人能解决吗?(有关详细信息,请参见minimal test case)。