2012-01-31 78 views
10

我正在创建一个具有强制布局的无向图。另外,我尝试用click事件来改变每个圆的(节点)的颜色。有没有想法在圆形元素上添加这样的事件。我tyry这个代码,但它不工作。d3.js将点击动作添加到力布局圈?

vis.selectAll("circle.node").on("click", function(d){ 
    vis.select(d).attr(r, 25) 
    .style("fill","lightcoral") 
    .style("stroke","red"); 
}); 
+0

你是不是指'attr('r',25)'? – Dogbert 2012-01-31 14:13:09

+0

我需要做这样的attr更改,但我无法选择所选的节点。那是我尝试使用“d”作为func。选择圈子的参数,但它不起作用。 – erogol 2012-01-31 14:29:55

回答

17

select(d)引用数据,而不是元素。您需要select(this)

vis.selectAll("circle.node").on("click", function(){ 
      d3.select(this).attr('r', 25) 
       .style("fill","lightcoral") 
       .style("stroke","red"); 
     }); 
2

vis.select(this)给我一个DOM异常。 d3.select(this)适合我。您还可以使用d3.event.target来访问单击的DOM元素。