我有一个(非常简单的)问题:如何“取消”对D3.js创建的选择使用force.drag?假设我创建了一组元素并调用了“call”,将其设置为力导向布局的拖动回调函数。代码如下:
d3.selectAll('rect').call(force.drag);
现在可以随后从某些节点中移除该行为。我的方法包括使用reset来重置各种监听器,例如'click'、'drag'等。
d3.select('rect#no-drag').on('click', null);
所有这些方式都没有起作用。有人知道如何删除回调函数吗?
d3.select('rect#no-drag').on('mousedown.drag', null)
后,调用d3.select('rect#no-drag').call(force.drag)
无法将其恢复。 - kdbanmanvar dragCallback = d3.select('rect#no-drag').property('__onmousedown.drag')['_'];
然后稍后恢复它:d3.selectAll('rect#no-drag').on('mousedown.drag', dragCallback);
- Jonathan Guerrera