zanderwar
zanderwar

Reputation: 3730

jsTree checkbox events not firing

I'm having trouble getting checkbox events to fire, specifically enable_checkbox and disable_checkbox

My code to init jsTree is:

$('#contenteditor-hierarchy').jstree({
    "plugins": [
        "checkbox"
    ],
    "checkbox": {
        "visible": true,
        "tie_selection": false,
        "whole_node": false
    },
    "core": {
        "check_callback": true,
        "data": {
            "url": function (node) {
                //...
            },
            "type": "get",
            "data": function (node) {},
            "dataType": 'json'
        }
    }
});

and I have tried:

$tree.bind('enable_checkbox.jstree', function() {
    alert('test');
});

// and...
$('#contenteditor-hierarchy').on('enable_checkbox.jstree', function() {
    alert('test');
});

// as well as..
$(document).on('enable_checkbox.jstree', function() {
    alert('test');
});

for the interim, a not so classy hack; the below works for me:

$('body').on('click', '.jstree-checkbox', function(e) {
    // at the time of this event firing, jstree hadn't finished handling the click event
    // so I had to timeout....
    setTimeout(function() {
        console.log($tree.jstree(true).get_checked());
    }, 200);
});

However in neither attempt was an alert actually fired.

The API docs is quite vague so wondering if anyone is aware of where I am going wrong.

Upvotes: 1

Views: 721

Answers (1)

mgarcia
mgarcia

Reputation: 6335

Based on the code with the click event and the setTimeout, I would say that what you are trying to achieve is to set an event to detect when the checkbox is checked or unchecked.

If that is the case, you should use the events check_node.jstree and uncheck_node.jstree respectively.

Upvotes: 2

Related Questions