在 d3 树中加载时折叠特定节点

collapse specific nodes on load in d3 tree

嗨,我更新了我的问题,我还包括了一个有效的 jsfiddle,可以清楚地看到我想做什么....http://jsfiddle.net/elviz/Ge58Q/15/

 nodeEnter.append("text")
   .attr("dy", 3.5)
   .attr("dx", 5.5)
   .attr("x", barWidth +20)
   .text(function(d) { return d.redirect_info; })
   .on("click", function(d){
        // using the value in d.redirect
       //search for the node with item_id equal to d.redirect
       //after finding that node input in update to draw



   });

上面的代码我创建了一个文本并附加了一个 onclick 事件......如果文本被点击我想要的是使用 d.redirect 的值寻找具有 [=18= 的节点] 等于 d.redirect 然后在更新函数中输入该数组以绘制树......在我的示例中,如果单击文本 redirect_9_node_simple 它将绘制从 ROOT 到 THE 的节点节点简单,如果单击文本 redirect_13_node_alluring,我想从 ROOT UP 到 ALLURING NODE 绘制树。请注意,请向右滚动,因为文本 link 位于矩形

右侧 20px

您可以按如下方式隐藏节点的子节点:

function collapseSingle(node) {
    if (node.children) {
        node._children = node.children;
        node.children = null;
    }
}

现在,如果您想显示节点的子节点,您可以这样做:

function expandSingle(node) {
    if (node._children) {
        node.children = node._children;
        node._children = null;
    }
}

因此,在隐藏所有子节点后显示节点 2 - clustergraph 节点的子节点:

flare.children.forEach(collapse);
flare.children.forEach(expandSingle);

flare.children 仅包含一个节点 2 并且其子节点将可见(请参阅第 37 行和第 47 行 http://jsfiddle.net/Ge58Q/10/)。在这种情况下,行 flare.children.forEach(expandSingle) 可以替换为 expandSingle(flare.children[0]) ... flare.children[0] 是节点 2