usr4896260
usr4896260

Reputation: 1507

jstree open_node not working on child nodes

When my checkbox jstree has finished loading, I wish to pre open the last opened nodes (not select_node). The open_node function only seems to work on the top most parent level nodes. I even tried iterating through the node and calling open_node and it still doesn't work. I have the following:

// Create instance for checkbox jstree.
$(function () {
    $('#myTree').jstree({
        "core": {
            "themes": {
                'name': 'default',
                "variant": "small",
                "icons": false
            },
        },
        "checkbox": {
            "keep_selected_style": false,
            "three_state": false,
        },
        "plugins": ["checkbox"]
    });
});

$("#myTree").bind('ready.jstree', function (event, data) {
    var $tree = $(this);
    $($tree.jstree().get_json($tree, {
        "flat": true
    })).each(function (index, value) {
        // lastOpenedNode.value contains the id of the last opened node
        if ( nodeWasLastOpened(this.id) == true)
            // ONLY OPENS TOP MOST PARENT NODES
            $("#myTree").jstree().open_node(this.id);
    })
});

Please help.

Upvotes: 0

Views: 4346

Answers (1)

Nikolay Ermakov
Nikolay Ermakov

Reputation: 5061

There is a private method you could use for that, _open_to, that will open all nodes down to the one you want to be shown. Check code below and demo - Fiddle.

 $("#myTree").jstree()._open_to( lastOpenedNode.value );

or

if ( nodeWasLastOpened(this.id) )
     $("#myTree").jstree()._open_to( this.id );
})

Upvotes: 1

Related Questions