我有以下代码......
var drag = d3.behavior.drag()
.on("dragstart", function(d, i){
console.log("Started dragging "+d.x+":"+JSON.stringify(i));
})
.on("dragend", function(){
console.log("Ended dragging");
});
....
var circle = elemEnter.append("circle")
.attr("r", function(d){
// return d.r
return 30;
})
.attr("stroke", "black")
.attr("fill", "blue")
.call(drag)
我看到dragstart被调用但是dragend控制台消息从未显示
更新:
看起来实际问题来自于此......
var force = d3.layout.force()
.charge(-600).linkDistance(80).size([width, height]);
var elemEnter = svg.selectAll(".node")
.data(graph.nodes).enter()
.append("g")
.call(force.drag);
当我将call(drag)
添加到此末尾时,它会按预期记录,但不允许移动。
答案 0 :(得分:0)
问题与父g
以某种方式覆盖孩子circle
上的拖拽事件有关。如果我添加force.drag().on("dragend", dragended);
,它似乎按预期工作。