2012-08-07 125 views
1

我朝着我d3.js一個節點圖使用下面的代碼:d3js移動節點,而無需拖動

d3.select("#"+ nodeid).attr("x",x); 
d3.select("#"+ nodeid).attr("y",y); 

這工作得很好,但是當我重新開始的節點上拖動,它的跳躍'回到原來的位置,並從那裏開始移動。

任何想法我在做什麼錯在這裏?

回答

1

我結束了剛剛添加該的代碼以及

d3.select("#"+ nodeid).data([{x: x, y: y}]); 
1

您正在更新DOM元素(圖形),但不是基礎數據,並且dragstart事件正在使用仍保存在數據中的原始位置。

嘗試這樣:

force.setNodeCoords = function (id, x, y) { 
    var fnodes = force.nodes(); 
    fnodes[id].x = x; 
    fnodes[id].y = y; 
    force.nodes(fnodes); 
    svg.selectAll("circle.node") 
     .attr("cx", function(d) { return d.x; }) 
     .attr("cy", function(d) { return d.y; }); 
}; 

(其中svg是您的SVG或其他父DIV和node是班級的節點)

你可能也想更新的行/鏈接!

+0

比你了這一點。我確定它的工作原理,但我發現一個簡單的修復。 – 2012-08-07 01:19:21