Search code examples
javascriptjsonjstree

jsTree - is_parent() returning wrong value


I'm requesting data from a remote server with json return in format :

[
{"id":"1", "parent": "#", "text" : "Parent1"},
{"id":"2", "parent": 1, "text" : "Child1"}
{"id":"3", "parent": 2, "text" : "Child12"}
{"id":"4", "parent": 1, "text" : "Child2"}
{"id":"5", "parent": 1, "text" : "Child3"}
{"id":"6", "parent": 4, "text" : "Child21"}
]

I would like to check if the selected node is a parent. I use this code:

$('#treeview').on("select_node.jstree", function (e, data) {
        var isParent = data.instance.is_parent(); 
        alert(isParent)
    });

It always returns false even when I click on PARENT.

What am I missing here ?

UPDATE This is how I get solved the issue. But I still wonder why the methods is_parent() and is_leaf() are not working

var isParent = (data.node.children.length > 0);

Solution

  • To get parent

    use

    var isParent = (data.node.children.length > 0);
    alert(isParent );
    

    $('#treeview').jstree({
      'core': {
        'data': [{
            "id": "1",
            "parent": "#",
            "text": "Parent1"
          }, {
            "id": "2",
            "parent": 1,
            "text": "Child1"
          },
          {
            "id": "21",
            "parent": 2,
            "text": "Child1"
          },
          {
            "id": "3",
            "parent": 2,
            "text": "Child12"
          }, {
            "id": "4",
            "parent": 1,
            "text": "Child2"
          }, {
            "id": "5",
            "parent": 1,
            "text": "Child3"
          },
          {
            "id": "6",
            "parent": 4,
            "text": "Child21"
          },
          {
            "id": "7",
            "parent": '#',
            "text": "Parent 2"
          },
          {
            "id": "8",
            "parent": 7,
            "text": "Child"
          }
        ]
      }
    });
    
    $('#treeview').on("select_node.jstree", function(e, data) {
      // var isParent = data.instance.is_parent(data);
      // If you need to check if a node is a root node you can use:
      var isParent = (data.node.children.length > 0);
      console.log(data.node);
      alert(isParent)
    });
    <link href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>
    
    <div id="treeview"></div>