.append()根据条件选择不同的选择?

时间:2015-05-27 15:23:33

标签: d3.js

我遇到与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实现这一目标的任何想法?

2 个答案:

答案 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") 
 });

如果我的代码能够更好地提供帮助。