D3.js:从选择中删除force.drag

use*_*123 12 javascript drag d3.js force-layout

我有一个(相当简单的)问题:如何在D3.js的选择中"取消调用"force.drag?假设我创建了一组元素并在其上调用"call",给它一个强制定向布局的拖拽回调.看起来像这样:

    d3.selectAll('rect').call(force.drag);
Run Code Online (Sandbox Code Playgroud)

现在,以后可以从某些节点中删除该行为.我的方法包括重置各种听众,例如"点击","拖动"等

    d3.select('rect#no-drag').on('click', null);
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.有人知道如何删除回调吗?

nau*_*tat 22

你很亲密 拖动事件由mousedown具有名称空间的事件启动drag.请参阅:https://github.com/mbostock/d3/blob/master/src/behavior/drag.js#L5

所以,要删除它你可以做:

d3.select('rect#no-drag').on('mousedown.drag', null);
Run Code Online (Sandbox Code Playgroud)