实施了力布局,这里是fiddle。但是我想禁用节点的拖动行为,拖动事件将移动节点并将节点居中设置为光标位置直到mouseup事件。有没有办法可以禁用它?我尝试从节点中删除回调,如下所示:
node.append("svg:circle").attr("r",5).style("fill", "#FE9A2E").on("mousedown.drag", null)
这不起作用。不确定它是否会从节点中删除回调。还尝试通过将节点的固定属性设置为true来修复拖动事件上的节点位置。但是,它在拖动节点后修复了节点。如何阻止节点拖动?
答案 0 :(得分:2)
默认拖动行为将添加到此语句最后部分的节点中:
var node = vis.selectAll("g.node").data(nodeSet).enter()
.append("svg:g").attr("class", "node").call(force.drag);
只需删除.call(force.drag)
,您就无法再移动各个节点。如果您还想摆脱可以在整个图形中移动的行为,那么它是在此语句的最后一行中添加的“缩放”行为的一部分:
var vis = d3.select(".journalGraph").append("svg:svg")
.attr("width", w).attr("height", h)
.attr("pointer-events", "all").append('svg:g')
.call(d3.behavior.zoom().on("zoom", redraw)).append('svg:g');
删除调用语句将消除平移和缩放功能。有关缩放的详情,请参阅https://github.com/mbostock/d3/wiki/Zoom-Behavior。