1

我使用这个例子作为基础: http: //mbostock.github.io/d3/talk/20111018/tree.html

在我的代码中,我从折叠所有节点开始,用户可以单击分支来导航树,就像在演示中一样。

为了用户方便,我想使用 jQuery 来切换展开/折叠根的所有子级。下面的代码只会切换根的直接子级。

我尝试了很多选项,但无法计算出正确的功能。任何帮助,将不胜感激。

$('.clicktoexpandALL').click(function(){
    toggle(root);
    update(root);
});

我已经尝试过toggle(root.children[0])toggle(root.children[1].children[2]);但无济于事。

编辑:更新的问题。

如果我可以访问该toggleAll(d)函数,我将能够做我想做的事,但一个简单的函数调用将不起作用。

d3.json("json/results.json", function(json) { root = json; root.x0 = h / 2; root.y0 = 0;

function toggleAll(d) {
  if (d.children) {
    d.children.forEach(toggleAll);
    toggle(d);
  }
}

// Initialize the display to hide nodes.
root.children.forEach(toggleAll);

update(root);

});

添加了 JSFIDDLE 链接

代码 http://jsfiddle.net/chrisloughnane/vV3Sc/

全屏 http://jsfiddle.net/chrisloughnane/vV3Sc/show/

4

1 回答 1

1

我认为您需要使用该方法toggleAll来切换根节点及其下的子节点:

function toggleAll(d) {
  if (d.children) {
    d.children.forEach(toggleAll);
    toggle(d);
  }
}

toggle方法将隐藏/显示children根的属性,而不是其他节点的子节点。

于 2013-04-16T23:47:48.653 回答