首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3.js可折叠树-展开/折叠节点

问D3.js可折叠树-展开/折叠节点
EN

Stack Overflow用户
提问于 2015-11-27 15:15:53
回答 2查看 1.8K关注 0票数 3

我有一个D3.js可折叠树,它有一堆节点,如下图所示

​

现在,如果一个节点被展开,我想折叠所有其他节点。例如,在图中,如果analytics node是展开的,那么它应该折叠data node。我指的是D3.js collapsible tree - expand/collapse intermediate nodes,但它没有多大帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-27 21:17:46

我在Przemek暗示的帮助下找到了解决方案。现在它工作得很好。:)

代码语言:javascript
复制
function click(d) {
var index;
for(var i=0;i<d.parent.children.length;i++){//length of current label
    if(d.parent.children[i].name===d.name)
        index = i;
};

for(var i=0;i<d.parent.children.length;i++){
    if(typeof d.parent.children[i].children!=="undefined" && i!=index){//if child is expnd then make null
        d.parent.children[i]._children=d.parent.children[i].children;
        d.parent.children[i].children= null;
    }
}
if (d.children) {
    d._children = d.children;
    d.children = null;
} else {
    d.children = d._children;
    d._children = null;
}
update(d);
}
票数 0
EN

Stack Overflow用户

发布于 2015-11-27 15:47:07

将单击函数更改为

代码语言:javascript
复制
function click(d) {
    for (var i = 0; i < d.parent.children.length; i++) {
        if (d.parent.children[i].name !== d.name) {

            console.log(d.parent.children[i])

            if (d.parent.children[i].children) {
                d.parent.children[i].children = d._children;
                d.parent.children[i].children = null;
            }           
        }
    };

    if (d.children) {
        d._children = d.children;
        d.children = null;
    } else {
        d.children = d._children;
        d._children = null;
    };

    update(d);
}

希望它能帮上忙

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33960316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档