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

27,951

Solution 1

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() });
});

Solution 2

1 More easy solution

 .get_path ( node , id_mode )

return the path to a node, either as an array of IDs or as an array of node names. mixed node : This can be a DOM node, jQuery node or selector pointing to an element within the tree, whose path we want.bool id_mode : If set to true IDs are returned instead of the names of the parents. Default is 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);
Share:
27,951
StackOverFlow
Author by

StackOverFlow

Software developer

Updated on April 09, 2020

Comments

  • StackOverFlow
    StackOverFlow about 4 years

    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.