2012-07-16 1 views
5

의 모든 자식과 하위 자식 노드를 가져옵니다. 하지만 어떻게 든 재귀를 사용하지 않으면 작동하지 않습니다. jsTree 고유의 더 좋은 방법이 있습니까?jstree의 jQuery 플러그인은 - 내가 모든 노드와 선택한 부모의 하위 노드를 가져 오기 위해 애 쓰고 <a href="http://jstree.com" rel="noreferrer">jsTree jquery plugin</a></p> <p>을 사용하고 부모

+0

P. - 나는 여기서 나의 질문에 대답했다. – Sid

답변

2

. 제 경우에는 xml을 트리의 데이터 소스로 사용하고 있습니다. 다음과 같은 방식으로 open_node 이벤트를 jstree에 바인딩합니다. xml을 사용하더라도 내부 구조는 html 데이터의 구조라는 것을 알아 두십시오.

// jsTree Configuration hash 
var jsTreeConfig = {}; 

$("#demo1").jstree(jsTreeConfig) 
      .bind('open_node.jstree', function(e, data) { 
       var parentObj = data.rslt.obj; // parent object 
       var jstreeInstance = data.inst; // jstree instance 
       $(data.rslt.obj).find("li").each(function(idx, listItem) { 
        var child = $(listItem); // child object 
        // do Stuff with child which can be any level of hierarchy depth 
        // ... 
       }); 
      }); 
+0

불쌍한 들여 쓰기 죄송합니다. jstree ({...})에는 jstree를 인스턴스화하는 모든 옵션이 있습니다. 이 기능이 작동하려면 jQuery가 미리로드되어 있어야합니다. – Sid

4

당신은이 모든 선택기를 사용하여 전체 트리를 얻을 수 있습니다 :이 할 수있는 방법을 발견 $("#demo1").find("li > a")

+0

감사합니다. @fliespl하지만 주어진 부모의 자식 노드 만 필요합니다. 나는 그것을하는 방법을 알아 냈다. 나는 그것을 테스트 한 후 곧 답변을 게시 할 것입니다. – Sid

4

이전 솔루션을 시도했지만 최신 버전의 jsTree (v3.2.1)에서는 작동하지 않습니다. 아래는 부모의 하위 노드와 하위 노드를 가져 오는 업데이트 된 솔루션입니다.

$("#myTree").bind('selected_node.jstree', function (node, data) { 
    var selectedNodes = $("#myTree").jstree(true).get_json(data.node.id, { flat: true }); 
    for (var i = 0; i < selectedNodes.length; i++) { 
     // Apply logic here 
     // ... 
     // ... 
     // ... 
    } 
});