30

当一个事件正在播放时,d3.event.x 给出鼠标点击的 x 坐标位置,但相对于整个 HTML 文档。我尝试使用 jQuery 的 $('svg').position() 来获取 svg 的实际位置,但这会返回明显错误的值。

有没有一些简单的方法可以找到 svg 相对于我正在忽略的页面的位置?顺便说一句,我正在使用 Chrome,以防 jQuery 问题是一个晦涩的浏览器错误。

编辑:我在 Firefox 中检查了这个并且 $('svg').position() 返回了正确的坐标。?!?

4

1 回答 1

57

不要使用浏览器的原生事件d3.event ,而是使用d3.mouse来获取相对于某个容器的坐标。例如:

var svg = d3.select("body").append("svg")
    .attr("width", 960)
    .attr("height", 500);

var rect = svg.append("rect")
    .attr("width", "100%")
    .attr("height", "100%")
    .on("mousemove", mousemove);

function mousemove(d, i) {
  console.log(d3.mouse(this));
}
于 2012-04-20T16:01:50.530 回答