いくつかの方法があります。1 つは、通常のスタイリングを使用して子のマークアップを非表示にする方法です (不透明度: 0、または表示: なし)。ただし、これはデータを非表示にするだけで、ツリーはデータがそこにあるかのようにその形状を維持しますが、見ることはできません。
通常、ツリーにデータが存在しないふりをして、それに応じて更新する必要があります。そのため、上記のリンクの強制指向レイアウトの例と同じアプローチを使用できます。
要約すると、1) 関数を使用して d3 ツリーを構築する 2) 折りたたみ可能なノードにクリック イベントを追加する 3) クリック イベントは、ノードの children プロパティの名前を変更し、1) の関数を呼び出し、それなしでツリーを再描画します。ノードの子。
nkoren の回答 ( http://bl.ocks.org/1062288 ) のリンクからの関連コードは次のとおりです。
function update() {
// build the tree layout here
// append on("click", click) to the collapsible nodes
}
// Toggle children on click
function click(d) {
if (d.children) {
d._children = d.children;
d.children = null;
} else {
d.children = d._children;
d._children = null;
}
update();
}