禁用节点拖动强制布局

时间:2013-12-27 16:43:04

标签: javascript d3.js

实施了力布局,这里是fiddle。但是我想禁用节点的拖动行为,拖动事件将移动节点并将节点居中设置为光标位置直到mouseup事件。有没有办法可以禁用它?我尝试从节点中删除回调,如下所示:

node.append("svg:circle").attr("r",5).style("fill", "#FE9A2E").on("mousedown.drag", null) 

这不起作用。不确定它是否会从节点中删除回调。还尝试通过将节点的固定属性设置为true来修复拖动事件上的节点位置。但是,它在拖动节点后修复了节点。如何阻止节点拖动?

1 个答案:

答案 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