d3.js - 使用 v6 中的箭头功能在拖动事件中选择元素

标签 d3.js

我正在使用拖动事件来移动元素。为了移动元素,我必须先选择它。我在箭头函数中这样做:

const drag = d3.drag()
 .on('start', (e, d) => this.dragstarted(e, d))
 .on('drag', (e, d) => this.dragged(e, d))
 .on('end', (e, d) => this.dragended(e, d))

我要选择当前元素

  dragged(event:any, d:any) {
   console.log(d3.select(event.currentTarget))
  }

这是行不通的。它似乎只有在我使用非箭头函数时才有效:

const _this = this;
...
.on('drag', function (e, d) { _this.dragged(e, d, this) })
...
dragged(event:any, d:any, el:any) {
   console.log(d3.select(el))
}

版本5传递了可用于选择的元素的节点和索引:

dragged(d, i, nodes) {
    d3.select(nodes[i])
}

有没有办法在箭头函数中选择 svg 元素以获取 V6 中拖动事件中项目的句柄?

最佳答案

当调用 D3 拖动处理程序时,thisevent.sourceEvent.target 相同,因此:

.on('drag', function(e, d) { onDrag(this, d); })

将与以下工作方式相同:

.on('drag', (e, d) => onDrag(e.sourceEvent.target, d))

请注意,该代码对 V6/V7 有效。对于 V5 或更早版本,使用 d3.event.sourceEvent.target

关于d3.js - 使用 v6 中的箭头功能在拖动事件中选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68144094/

相关文章:

javascript - JavaScript 中的定向网络图

javascript - 为什么解析 geojson 文件后在浏览器中看不到 map ?

javascript - 每个图形节点上的链接动画/转换 - D3.js

javascript - D3.js 在 Mozilla Firefox 上无法正确呈现

javascript - HTML 按钮的 "onclick"属性在单击之前调用函数

javascript - 在dimple.js 中处理大型数据集以呈现图表

javascript - JS-如何删除重复的 JSON 节点并为所有合并的节点添加一个链接

javascript - 通过 ID 获取节点

javascript - 防止在 d3v5 中平移到 map 边界之外

javascript - SVG 向圆环图添加径向渐变