我可能在某种程度上损害了大脑的atm,因为这样的事情应该是微不足道的。
我有一堆手动绘制的svg圆(通过React)。然后,我将d3拖动行为附加到所有它们。应用了拖动行为并执行了拖动功能,但是当我拖动这些圆圈之一时,我无法做出相应的响应,因为我不知道哪个圆圈被移动了。在哪里可以获取被拖动元素的ID?
我检查了其他几个问题,然后发现了一些疯狂的过滤器解决方案……不可能。
我也偷看了文档并找到了该subject属性。但是,在我尝试过的所有地方都为null。
我的代码:
componentWillUpdate() {
let nodes = d3.selectAll("circle");
const dragFn = (d,i) => {
d3.event.sourceEvent.stopPropagation();
this.props.onNodeDrag(I_NEED_AN_ID_HERE);
}
const dragBehavior = d3.behavior.drag();
dragBehavior.on('drag', dragFn);
dragBehavior.on('dragstart', () => {
d3.event.sourceEvent.stopPropagation();
});
nodes.call(dragBehavior);
}
Run Code Online (Sandbox Code Playgroud)
我不知道函数中的“ this”是什么,但是在普通js中,您可以通过以下方式获取html元素的任何属性:
d3.select(this).attr("id"); //or class etc.
Run Code Online (Sandbox Code Playgroud)
或是否已包装
d3.select(this).select("circle").attr("id");
Run Code Online (Sandbox Code Playgroud)
这是一个示例:http : //jsfiddle.net/a2QpA/343/
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |