如何在jstree更改事件中更改项目的ID

时间:2014-03-19 13:59:38

标签: javascript jquery arrays object jstree

我想知道更改时检查或取消选中的项目。

var MenuTree = function () {
    $.ajax({
        type: "POST",
        url: "Menu_Permission.aspx/Menu",
        contentType: "application/json",
        dataType: "json",
        success: function (data) {
            var menujson = JSON.parse(data.d);
            $('#tree_menu').jstree({
                'plugins': ["wholerow", "checkbox", "types"],
                'core': {
                    "themes": {
                        "responsive": false
                    },
                    'data': menujson
                }
            });
        },
        error: function () {
            console.log('err')
        }
    });

    $(function () {
        $('#tree_menu').on('changed.jstree', function (e, data) {
            console.log(data.node);
            console.log(data.selected);
        });
    });

    $(function () {
        $('#tree_menu').on('deselect_node.jstree Event', function (e, data) {
            console.log(data.node.id);
        });
    });
    $(function () {
        $('#tree_menu').on('select_node.jstree Event', function (e, data) {
            console.log(data.node.id);
        });
    });


}

我有这些函数,changed.jstree返回对象,我无法访问被点击的ID。其他人正确地返回我的身份,但是,如果它是最后一个检查项并且它发生了变化,我将如何知道父项复选框是否已更改。否则,如果它是根项目并且它有子项,则所有这些项目都将消失,我怎么知道它。  data.selected返回我选择的数组,但有没有办法知道哪个被更改,从选择到未选择或反向?

并且函数触发onload,我该如何更改?

1 个答案:

答案 0 :(得分:2)

使用以下内容:

$(function () {
    $('#tree_menu').on('changed.jstree', function (e, data) {
        console.log(data.node.id);
    });
});

而不是

console.log(data.node);

使用

console.log(data.node.id);