使用d3获取鼠标点击svg的坐标

brn*_*792 8 javascript jquery svg d3.js

我想在矩形svg上点击鼠标的坐标.我正在尝试将鼠标单击坐标打印到控制台.

我可以使用pageXpageY获取坐标,但这是整个页面.我只需要svg里面的坐标.

我正在使用 d3.v3.min.js

所以我尝试过:

$(document).mousedown(function () {
     console.log(d3.mouse(this));
});
Run Code Online (Sandbox Code Playgroud)

我收到错误:

未捕获的TypeError:无法读取null的属性'sourceEvent'

我也尝试过:

$(document).mousedown(function () {
     console.log(d3.mouse(document.getElementById("svg_id")));
});
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误.

当我尝试时d3.svg.mouse(this),我得到错误:

未捕获的TypeError:undefined不是函数

如何获取svg中的点击坐标以及为什么这些d3.mouse()功能不起作用?

Ste*_*mas 15

代码的问题在于您使用的是jQuery事件处理而不是D3事件处理.您需要以下内容:

var svg = d3.select("svg");
svg.on("click", function() {
    console.log(d3.mouse(svg.node));
})
Run Code Online (Sandbox Code Playgroud)

  • 澄清一下:`d3.mouse`使用的值是在拦截事件并将其传递给事件处理程序时由d3设置的; 所以,你只能在用d3` .on()`方法注册的事件处理程序中使用`d3.event(containerElement)`. (5认同)
  • 经过大量的捣乱,我发现只有`d3.mouse(this)`在`svg.on('click')`函数内部工作. (3认同)