使用d3.js,我是在(比方说)父节点的某个值x之后,我会使用:
d3.select(this.parentNode).datum().x
但我想要的是数据(即数据)索引。建议?
谢谢!
答案 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;
});