d3.js tree:点击它后,如何删除节点的兄弟节点?

时间:2014-11-27 17:54:03

标签: d3.js tree nodes jstree siblings

总共d3新手在这里,

我使用一些非常有用且信息丰富的网络教程完成了粗略的树形图。

现在,当点击某个节点时,其兄弟姐妹的子女就会崩溃。

 if (d !== root) {
    if (d.parent){
        d.parent.children.forEach(function(element) {
        if (d !== element) {
            collapse(element);
        }
    });
}

}

http://codepen.io/depaorca/pen/qEdLOr?editors=100

相反,我现在希望在单击节点时在每个级别删除兄弟节点,并在关闭节点时重新出现。

我知道我需要在函数click(d)中执行此操作,我坚持的是,我可以更改我的代码以简单地用某种删除函数替换折叠代码吗?我完全忽视了一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

因此,如果你查看click(d)的最后一位,你会发现它正在检查节点是否有父节点并且折叠了所有不同于所点击节点的节点。如果不是将它们折叠起来而是将它们从父项的.children属性移动到父类._children属性中,它们应该被隐藏。

然后你只需要编写一个案例,其中父对象在._children中并将它们移回.children