javascript - 将 OnClick 事件添加到 D3 强制布局图

标签 javascript svg d3.js nodes force-layout

我正在尝试将 OnClick 事件添加到我的力布局图的节点,但是当我尝试单击它们时,没有任何反应。我相信这是因为我没有使用 svg 元素,并且 .on("click", click) 仅适用于我认为的 svg 元素,但我不完全确定。这是我试图实现的代码:

var node = svg.selectAll(".node")
.data(nodes)
  .enter().append("circle")
.attr("r",function(d) {return d.size})
  .style("fill",function(d) {return color(d.type);})
.on("click", click)
  .call(force.drag);

  node.append("title")
  .text(function(d){return d.name;});

  force.on("tick", function(){
  node.attr("cx", function(d){return d.x;})
    .attr("cy", function(d) {return d.y;});

  link.attr("x1", function(d){return d.source.x;})
    .attr("y1", function(d){return d.source.y;})
    .attr("x2", function(d){return d.target.x;})
    .attr("y2", function(d) {return d.target.y;});
});


function click() {
   d3.select(this).select("circle").transition()
     .duration(750)
     .attr("r", 30)
     .style("fill", "lightsteelblue");
      }

当我尝试单击节点时,没有任何反应。我不知道该怎么办。我认为问题与:

.enter().append("circle")

我认为它需要是像 ("g") 或 ("svg") 这样的 svg 元素,但我无法弄清楚。任何意见或建议将不胜感激。谢谢!

最佳答案

您在 click() 中有一个额外的 .select("circle")。相反,它应该从以下内容开始:

function click(){
    d3.select(this).transition()...
}

关于javascript - 将 OnClick 事件添加到 D3 强制布局图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24394369/

相关文章:

javascript - D3更新画笔的比例不更新画笔

javascript - 类型错误 : $ is not a function in AJAX and Wordpress

javascript - JavaScript 中的事件单击时未触发函数

javascript - Raphael US SVG map 在值更改时不会重新着色

json - 如何加载 json 对象而不是 json 文件

javascript - 创建两种颜色之间的色阶

JavaScript/jQuery 使用更多单词而不是 IndexOf - 聊天机器人

javascript - 将JSP文件加载到Javascript中实现Fragments

javascript - 是否可以在没有外部文件的情况下将 webkit css 掩码与 SVG 一起使用?

css - 如何在 CSS 中为 SVG 元素添加边框/轮廓/描边?