使用 d3 向 <g> 元素添加按钮

kLa*_*Lai 1 javascript button d3.js

我想知道使用 d3 向我的组元素添加按钮的最佳方法是什么。

我目前使用 d3 构建了我的视觉效果,看起来像:

<div>
  <svg>
    <g>
      <rect>
    </g>
    <g>...</g>
  </svg>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我想知道如何在每个组元素中添加一个可点击的按钮。我的一些想法是:

g.append("a")
  .append("image")
  .attr("src", ...);
Run Code Online (Sandbox Code Playgroud)

或者

g.append("a")
  .append("rect")
  .attr(...)
Run Code Online (Sandbox Code Playgroud)

最终我希望按钮执行 onclick 事件。解决这个问题的最佳方法是什么?

go-*_*leg 5

您可以创建一个rect并使用 d3 的selection.on api 来注册一个点击监听器:

var rect = d3.select('svg g rect');

rect.on('click', function() {
  console.log('i was clicked');
});
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 3.5em !important; }
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<svg width="400" height="400">
  <g transform="translate(50,50)">
    <rect height="100" width="200" fill="red"/>
  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)