如何使用d3.js获取parentNode的索引

时间:2013-11-26 15:45:18

标签: dom d3.js

使用d3.js,我是在(比方说)父节点的某个值x之后,我会使用:

d3.select(this.parentNode).datum().x

但我想要的是数据(即数据)索引。建议?

谢谢!

1 个答案:

答案 0 :(得分:7)

元素的索引仅在集合中定义良好。当您只选择一个元素时,没有集合,并且没有真正定义索引的概念。例如,您可以创建多个g元素,然后对不同(重叠)子集应用不同的操作。任何单个g元素都有多个索引,具体取决于您考虑的子集。

为了完成您要实现的目标,您必须保留对要使用的特定选择的引用。有了这个和标识元素的东西,你就可以做这样的事情。

var value = d3.select(this.parentNode).datum().x;
var index = -1;
selection.each(function(d, i) { if(d.x == value) index = i; });

这依赖于具有唯一标识元素的属性。

如果您只有一个选择,则只需将索引另存为另一个数据属性,然后再访问它。

var gs = d3.selectAll("g").data(data).append("g")
  .each(function(d, i) { d.index = i; });
var something = gs.append(...);
something.each(function() {
  d3.select(this.parentNode).datum().index;
});