2014-11-27 6 views
1

총 d3 초보자 여기,d3.js 트리 : 노드의 형제를 클릭하면 어떻게 제거합니까?

나는 매우 유용한 유익한 인터넷 튜토리얼을 사용하여 거친 트리 다이어그램을 작성했다.

지금 노드를 클릭하면 형제의 하위 노드가 축소됩니다.

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

대신 내가 지금은 노드를 닫을 때 나는 노드를 클릭하고 다시 때 형제 각 레벨에 제거해야합니다.

나는이 기능을 클릭 (d) 할 필요가 있음을 알고있다. 나는 갇혀있다. 코드를 변경하여 코드를 붕괴 코드를 일종의 제거 함수로 대체 할 수 있는가? 내가 간과하고있는 간단한 해결책이 있습니까?

답변

0

click(d)의 마지막 비트를 보면 노드에 부모가 있는지 확인하고 클릭 한 노드와 같지 않은 노드를 모두 축소하고 있는지 확인할 수 있습니다. 그것들을 접는 대신 부모의 .children 속성에서 부모 ._children 속성으로 옮기면 숨겨져 야합니다.

그런 다음 부모가 ._children에있는 객체를 가지고있는 경우를 작성하고 .children으로 다시 이동해야합니다.