在我的d3应用程序

时间:2015-05-20 20:47:11

标签: d3.js

我有以下代码......

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)添加到此末尾时,它会按预期记录,但不允许移动。

1 个答案:

答案 0 :(得分:0)

问题与父g以某种方式覆盖孩子circle上的拖拽事件有关。如果我添加force.drag().on("dragend", dragended);,它似乎按预期工作。