我遇到与Updating SVG Element Z-Index With D3
类似的问题我首选的解决方案是在我的svg中设置两个组,如answer by notan3xit中所述。
但我有一个数据集,其中一个数据属性的布尔标志决定了svg元素属于哪个组。
svg.selectAll("path")
.data(d)
.enter()
.if(d.property).appendToGroup1()
.else.appendToGroup2()
这显然不起作用,但是这样的事情。
我只想迭代一次数据,并在运行时将生成的svg元素追加到相应的组中。
有关如何使用d3.js实现这一目标的任何想法?
答案 0 :(得分:2)
尝试
.each(function(d){
var toAppend = $(this);
if (!!d.property){
toAppend.appendtoGroup1();
} else {
toAppend.appendToGroup2();
}
})//...
一般的想法是将d
传递给回调,并在该回调中应用正确的追加方法。
在封闭的范围内首先保存对要添加的内容的引用应该更清晰,这样您就可以轻松地在其上调用.append()
。
答案 1 :(得分:1)
试试这个:
var selectedPath=svg.selectAll("path").data(d);
svg.selectAll("path").each(function(d,i){
if(d3.select(this).attr("property's name"))
selectedPath.append("some data to group 1")
else
selectedPath.append("some data to group 2")
});
如果我的代码能够更好地提供帮助。