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

uemypmqf  于 2022-11-29  发布在  jQuery
关注(0)|答案(1)|浏览(171)

嗨,我更新我的问题,我也包括了一个工作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事件......如果文本是click,我想要的是使用值d。redirect查找item_id等于d的节点。redirect然后在update函数中输入数组来绘制树.......在我的示例中,如果文本是redirect_9_node_如果单击“simple”(简单),则会从根到节点简单地绘制节点;如果单击“redirect_13_node_alluring”(文本),则会从根到所有节点绘制树。请注意,请向右滚动,因为文本链接在矩形右侧20 px

mw3dktmi

mw3dktmi1#

您可以隐藏节点的子节点,如下所示:

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);

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

相关问题