javascript - node - jstree json 사용법



jsTree:선택된 노드의 ID를 jsTree의 루트 노드로 가져 오는 방법은 무엇입니까? (2)

jsTree에서 선택한 노드의 ID를 루트 노드로 가져 오는 방법은 무엇입니까?

C 노드를 선택한 다음 C의 모든 부모 ID를 얻는 방법을 가정합니다.

에이

    • 기음

      + C1

      + c2

다음 코드는 즉각적인 상위 ID 만 반환합니다. C 를 선택하면 B 만 나타납니다.

 .bind("select_node.jstree", function (event, data) {  
    //`data.rslt.obj` is the jquery extended node that was clicked          
    alert("Selected node = "+ data.rslt.obj.attr("id"));
    alert("Parent of Selected node = "+ data.inst._get_parent(data.rslt.obj).attr("id"))
 });

산출:

Selected node = C

Parent of Selected node = B

모든 부모 노드 ID를 얻는 방법이 있습니까? 즉, 선택한 노드를 루트 노드에 연결 하시겠습니까?

  • jsTree에서 선택된 노드의 모든 자식 노드를 얻는 방법?

이 문제에 대한 도움이나 조언을 주시면 감사하겠습니다.

https://src-bin.com


Answer #1

jQuery의 parents 를 사용하여 모든 부모 항목을 가져 오십시오. 모든 트리 항목이 jstree 에서 li 이므로 다음과 같이 시도하십시오.

var parents = data.rslt.obj.parents("li");

그리고 children 은 jQuery에서 아이들을 사용하기 때문에 다음과 같이합니다.

var children = data.rslt.obj.parent().find('li');

편집 위의 방법을 사용하여 부모와 자식을 모두 가져 와서 각각에 대한 모든 배열에 저장하는 방법은 다음과 같습니다.

부모님:

var parents = [];
data.rslt.obj.parents("li").each(function () {
    parents.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
});

어린이:

var children = [];
data.rslt.obj.find("li").each(function () {
    children.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
});

Answer #2

1 더 쉬운 해결책

 .get_path ( node , id_mode )

노드의 경로를 ID의 배열이나 노드 이름의 배열로 반환하십시오. mixed node : DOM 노드, jQuery 노드 또는 트리 내의 요소를 가리키는 선택 자일 수 있습니다. bool id_mode : true로 설정하면 부모의 이름 대신 ID가 반환됩니다. 기본값은 false입니다.

// To get path [ID or Name] from root node to selected node 

var ids = data.inst.get_path('#' + data.rslt.obj.attr('id'),true);

// Returns IDs from root to selected node

var names = data.inst.get_path('#' + data.rslt.obj.attr('id'),false); 

// Returns Name's from root to selected node 

alert("Path [ID or Name] from root node to selected node = ID's = "+ids+" :: Name's = "+names);




jstree