У меня есть веб-страница с SVG. На некоторых его формах мне нужно отобразить всплывающую подсказку. Тем не менее, я не могу заставить всплывающую подсказку появиться там, где она должна, всего в нескольких пикселях от самой фигуры.
Он появляется в правой части экрана, может быть, примерно на расстоянии 300 пикселей. Код, который я использую для получения координат, выглядит следующим образом:
d3.select("body")
.select("svg")
.select("g")
.selectAll("circle")
.on("mouseover", function(){return tooltip.style("visibility", "visible");})
.on("mousemove", function(){
var svgPos = $('svg').offset(),
/*** Tooltip ***/
//This should be the correct one, but is displaying at all working at all.
/*x = svgPos.left + d3.event.target.cx.animVal.value,
y = svgPos.top + d3.event.target.cy.animVal.value;*/
//This displays a tool tip but way much to the left of the screen.
x = svgPos.left + d3.event.target.cx.animVal.value,
y = svgPos.top + d3.event.target.cy.animVal.value;
Tooltip
window.alert("svgPos: "+svgPos+" top: "+y+"px left: "+x+"px "+d3.event.target.cx.animVal.value);
return tooltip.style("top", x+"px").style("left",y+"px");
})
.on("mouseout", function(){return tooltip.style("visibility", "hidden");});
Я получил этот код после этого сообщения SO.
Я изменил $(ev.target).attr(cx), поскольку он не возвращает значение на моей машине; d3.event.target.cx, хотя кажется, что это никак не влияет на конечный результат.
Что я делаю неправильно? Может ли кто-нибудь помочь мне, пожалуйста? Большое вам спасибо за ваше время.