Javascript – jsTree : How to get IDs of selected nodes to root node in jsTree

htmljavascriptjqueryjquery-uijstree

How to get IDs of selected nodes to root node in jsTree?

Assume C is selected node then How can I get All parent IDs of C.

A

  • B

    • C

      +C1

      +c2

Following code will return only immediate parent ID:
If I selected C then I get only 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"))
 });

Output:

Selected node = C

Parent of Selected node = B

Is there any way to get all parent nodes ID i.e. Selected node to root node ?

  • How to get all child nodes of selected node in jsTree ?

Any help or guidance in this matter would be appreciated.

Best Answer

Use parents in jQuery to get all parents, filtering out by li because all tree items are li in jstree, try this:

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

And for children use children in jQuery, like so:

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

EDIT Using the above, here's how to get all parent and children and put them in all an array for each:

Parents:

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

Children:

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