Javascript 如何以编程方式触发D3拖动事件?

Javascript 如何以编程方式触发D3拖动事件?,javascript,d3.js,Javascript,D3.js,因此,我使用拖动事件侦听器绑定了一些数据: myNodes.enter() .append(“svg:g”) .call(d3.behavior.drag()) .on(“拖动”,函数(){ log(d3.event.dx,d3.event.dy); }) ); 现在我想以编程方式在某个节点上调用这个onDrag函数。我确实知道,通过这样做,标准赛事也可以做到这一点 aNode.on(“单击”)()//工作正常 阳极。on(“拖动”)()//不起作用 有什么办法吗?谢谢。将回调(传递到拖动处

因此,我使用拖动事件侦听器绑定了一些数据:

myNodes.enter()
.append(“svg:g”)
.call(d3.behavior.drag())
.on(“拖动”,函数(){
log(d3.event.dx,d3.event.dy);
})
);
现在我想以编程方式在某个节点上调用这个onDrag函数。我确实知道,通过这样做,标准赛事也可以做到这一点

aNode.on(“单击”)()//工作正常
阳极。on(“拖动”)()//不起作用
有什么办法吗?谢谢。

将回调(传递到拖动处理程序的回调)保存在变量中,然后在其他上下文中调用此变量

var dragCallback = function(){
  console.log(d3.event.dx, d3.event.dy);
};
var dragBehavior = d3.behavior.drag()
                     .on("drag", dragCallback);
myNodes.enter()
  .append("g")
  .call(dragBehavior);
  //Call drag method programmatically
  dragCallback()

你能设置一个JSFIDLE吗?就像这样,你的代码似乎正常工作,或者我不明白你想要什么行为。我想触发拖动功能,而不必移动鼠标一个像素。由于触发“点击”事件无需实际点击即可实现,我想知道鼠标移动是否也可以实现同样的效果。原因是我的窗口是动态调整大小的,所以鼠标位置相对不一样。。如果我仍然不清楚,请告诉我,我会看看我能用JSFIDLE做些什么,谢谢。我问了一个类似的问题,并回答了一个类似的问题,如果目标是用于测试(未在问题中说明),那么这个解决方案可能不实用。在不公开回调的情况下,代码可能是正确的——但是如何测试它呢?很抱歉,我刚刚看到了您的答案(不习惯这样)。这个解决方案会很好地解决我的问题。我那时还不熟悉异步编程,现在它完全讲得通了,谢谢。@Baustebig嗨,我的问题很相似,但不一样,这让我很伤心:你能帮忙吗,plz?