2017-04-21 3 views
1

My collapsible treed3.jsを使用して折りたたみ可能なツリー上の特定のノードを展開するにはどうすればよいですか?

私はこのツリーを持っており、毎回1つのノードを拡張したいと考えています。このコードが見つかりましたが、すべてのノードを一度に展開します。

function expand(d){ 
    if (d._children) { 
     d.children = d._children; 
     d.children.forEach(expand); 
     d._children = null; 
    } 

}

私はこの木の背後にあるロジックを持っていると私は私が拡大したいノードを選択するノードの名前のようにパラメータを渡すことで、いつでも特定のノードを展開します。

答えて

2

いずれかのこのようなd._childrenをいじって前に再帰を停止します。

function expand(d){ 
    if(d._children && d.level < 3){ // or d.name.indexOf("SpecialNode") > -1 or d.category == "expandable" or d.parent.name == "somename" etc 
     d.children = d._children; 
     d.children.forEach(expand); 
     d._children = null; 
    } 
} 

またはd.children

function expand(d){ 
    if(d._children){ 
     d.children = d._children; 
     d.children.filter(function(d) { return d.name.indexOf("SpecialNode") > -1; }) 
        .forEach(expand); 
     d._children = null; 
    } 
} 

(私はところで、後者を好むと思います)

forEach前に幸運をフィルタリング!

関連する問題