D3。如何对所选节点和所有父节点执行操作

时间:2016-02-26 16:12:53

标签: javascript d3.js

我有一个D3树图链接这个... https://bl.ocks.org/mbostock/4339083并且可以选择一个节点。我希望能够迭代父节点,并设置一个属性,例如d.MainBranch="Yes"。 我的想法是我可以右键单击,弹出一个菜单,然后单击"标记为主分支"。我已右键单击以获取弹出菜单。并且可以像这样在当前节点上设置d.MainBranch="Yes" ...

function marAsMainBranch(d) {           
    d.mainBranch="Yes"; 
    update(d);
}

只是缺乏迭代父母的能力:-(

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作来设置父数据并递归调用,直到没有父(从作用的节点开始)

function setInfoParent(d){
  d.mainBranch="Yes";
  if(d.parent){
    setInfoParent(d.parent);//call recursively itself till no parent.
  }
  console.log(d);
}

然后点击或右键点击动作,调用setInfoParent,如下所示:

function click(d) {
  setInfoParent(d);//call to set all parents.
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  update(d);
}

工作小提琴here