javascript - 使用 d3js 从 SVG 边界框获取点击事件

标签 javascript d3.js svg

我正在尝试添加一个鼠标点击事件监听器来点击 SVG 元素(在本例中为“measure”类的所有元素)边界框上的事件。 我认为应该起作用的是:

 var vrvToolkit = new verovio.toolkit(); // www.verovio.org

 jQuery.ajax({
     url: "http://www.verovio.org/examples/downloads/Schubert_Lindenbaum.mei",
     success: function (data) {
         var svg = vrvToolkit.renderData(data + "\n", "");
         jQuery("#svg_output").html(svg);
     },
     async: false
 });

 d3.select("#svg_output svg").selectAll(".measure")
     .on("click", function () {
     jQuery("#log").text(d3.mouse(this));
 });

see JSFiddle

不幸的是,只有鼠标点击实际绘制的元素才会被注册,空白区域会被忽略。

有没有办法识别特定边界框内的鼠标点击?

最佳答案

您无法检测对 d3 中不存在的元素的点击。

如果你想检测你的边界框,你需要创建一个具有相同形状的新元素(例如:<polygon>),使其不可见并将其添加到你想要监听的组中。

通常人们会创建一个大的透明矩形。

关于javascript - 使用 d3js 从 SVG 边界框获取点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31855331/

相关文章:

javascript - 如何使用数据表添加自定义标题并制作全宽 PDF

javascript - 在API调用中,我想在表中显示数据

javascript - D3js 仪表图

javascript - d3-cloud 仅呈现单词列表中的一个单词

javascript - SVG 将圆形转换为简单的直线

javascript - jQuery UI 确认对话框后的 Ajax 调用

JavaScript 架构/应用程序结构最佳实践?

javascript - 在鼠标悬停时选择第二个堆栈时无法选择整个堆栈

javascript - 来自 JSON 的 D3.JS 分组圆环图

ios - 如何在 PhoneGap 构建中使用 SVG 图像作为启动画面?