d3选择更改节点数据

时间:2015-05-22 20:07:02

标签: javascript d3.js

在我的d3图表中,我有时使用parent.selectAll().data()创建节点。 然后使用parent.select()检索创建的节点以继续更改其子节点。我面临的问题是,当我再次选择它时,d3似乎正在更改节点的__data__,它为其提供了父节点的数据,而不是我在selectAll调用中分配给它的节点的数据

我在jsfiddle中重现了这个问题: http://jsfiddle.net/dgm4snau/2/

我做错了吗?如何重新选择创建的节点而不覆盖其__data__

1 个答案:

答案 0 :(得分:2)

使用.select()进行子选择a side effect

  

如果当前元素具有关联数据,则此数据将由返回的子选择继承,并自动绑定到新选择的元素。

这就是你所看到的,并且是通过设计实现的。在您的情况下,解决方案是使用.selectAll()而不是.select()进行子选择:

level2Elem = level2Holder.selectAll('.level2');

修改过的小提琴here