Дерево d3.js: как удалить братьев и сестер узла, когда я нажимаю на него?

тотал d3 тут новичок,

Я сделал грубую древовидную диаграмму, используя несколько очень полезных и информативных интернет-руководств.

Прямо сейчас, когда на узел нажимают, потомки его братьев и сестер разрушаются.

 if (d !== root) {
    if (d.parent){
        d.parent.children.forEach(function(element) {
        if (d !== element) {
            collapse(element);
        }
    });
}

}

http://codepen.io/depaorca/pen/qEdLOr?editors=100

Вместо этого теперь я хочу, чтобы братья и сестры удалялись на каждом уровне, когда я нажимаю на узел, и снова появлялись, когда я закрывал узел.

Я знаю, что мне нужно сделать это в функции click (d), на чем я застрял, могу ли я изменить свой код, чтобы просто заменить сворачивающийся код какой-то функцией удаления? Есть ли простое решение, которое я полностью упускаю из виду?


person Clara    schedule 27.11.2014    source источник


Ответы (1)


Итак, если вы посмотрите на последний бит click(d), вы обнаружите, что он проверяет, есть ли у узла родитель, и сворачивает все узлы, которые не равны узлу, по которому щелкнули. Если вместо того, чтобы свернуть их, вы переместите их из родительского атрибута .children в родительский атрибут ._children, они должны быть скрыты.

Тогда вам просто нужно написать случай, когда у родителя есть объекты в ._children и переместить их обратно в .children.

person Cameron White    schedule 22.07.2016