Graph d3从节点和背景中分离单击和拖动

Graph d3从节点和背景中分离单击和拖动,graph,d3.js,Graph,D3.js,我试图在d3力图中启用拖动行为,这样就可以在背景上单击而不是节点或链接并拖动整个图,但也可以在不平移整个图的情况下单独单击并拖动节点。虽然我可以让每一个单独工作,但当我组合代码时,背景矩形似乎覆盖了节点,因此如果不拖动整个图形,我就不能再拖动节点。我已经包含了下面两段相关的代码,非常感谢您的帮助 此代码允许我平移和缩放整个图形: vis = d3.select("#chart") .append("svg:svg") .attr("width", w) .attr("height

我试图在d3力图中启用拖动行为,这样就可以在背景上单击而不是节点或链接并拖动整个图,但也可以在不平移整个图的情况下单独单击并拖动节点。虽然我可以让每一个单独工作,但当我组合代码时,背景矩形似乎覆盖了节点,因此如果不拖动整个图形,我就不能再拖动节点。我已经包含了下面两段相关的代码,非常感谢您的帮助

此代码允许我平移和缩放整个图形:

vis = d3.select("#chart")
.append("svg:svg")
    .attr("width", w)
    .attr("height", h)
    .append("svg:g")
    .call(d3.behavior.zoom().on("zoom", redraw))
    .append("svg:g");
此代码允许我拖动并单击节点-但仅当不包括上述代码时:

      var node = vis.selectAll("circle.node")
      .data(json.nodes)
    .enter().append("svg:circle")
      .attr("class", "node")
      .attr("cx", function(d) { return d.x; })
      .attr("cy", function(d) { return d.y; })
      .attr("r", 6)
      .style("fill", function(d) { return groupColors[(d.group)-1]; }) // fill(d.group)
      .on("click", function(d) {
            node.style("stroke","#FFFFFF");
            d3.select(this).style("stroke","red");
            clickNode(d);
            })
      .call(force.drag);

答案似乎是升级到当前版本d3.v2。在我做了这件事之后,我所追求的独立拖拽工作了!我想回答我自己的问题,但我必须等8个小时……我假设你的重画=函数{vis.attrtransform,translate+d3.event.translate++scale+d3.event.scale+;}?我实现了与你相同的图,但我的力定向图是不可破坏的。您能发布此功能的全部代码吗?答案似乎是升级到当前版本d3.v2。在我做了这件事之后,我所追求的独立拖拽工作了!我想回答我自己的问题,但我必须等8个小时……我假设你的重画=函数{vis.attrtransform,translate+d3.event.translate++scale+d3.event.scale+;}?我实现了与你相同的图,但我的力定向图是不可破坏的。您可以发布此功能的全部代码吗?