jquery jstree:如何恢复/删除一个节点

brtdzjyr  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(142)

我在我的应用程序中使用jsTree与contextmenu插件。
当删除一个节点时,我有一个在我的数据库上执行该操作的apache请求。
我想实际上只有在apache返回operation = true参数时才从视图中删除节点。
如何使用以下代码恢复已删除的jstree节点:

function (data) {
    var inst = $.jstree.reference(data.reference),
        obj = inst.get_node(data.reference);
    if(inst.is_selected(obj)) {
        inst.delete_node(inst.get_selected());
    }
    else {
        inst.delete_node(obj);
    }
}
mwg9r5ms

mwg9r5ms1#

只有当调用成功时,我才从树中删除节点。首先删除节点,然后进行调用,如果失败,然后尝试重新添加节点,这是没有意义的。下面是一个示例,仅当aEvent调用成功时才删除节点:

var node = $('#tree').jstree('get_selected');

$.ajax({
    url: link,
    type: 'GET',
    data: { id: node.attr('id') },
    async: false,
    success: function (data, text) {
        $('#tree').jstree('delete_node', node);
    },
    error: function (request, status, error) {
    }
});

ps.这将获得当前选定的节点

vkc1a9a2

vkc1a9a22#

还有两个选择您可以在回调时检查条件:

"check_callback": function(operation, node, node_parent, node_position, more) {
    if(operation=='delete_node'){
        if(true){
            return false;
        }
    }
    return true;                
}

或者,如果你使用上下文菜单,你可以检查那里的条件:

"contextmenu":{         
    "items": function(node) {
        return {
            "Remove": {
                "separator_before": false,
                "separator_after": false,
                "label": "Remove",
                "action": function (obj) { 
                    if(true){
                        tree.delete_node(node);
                    }
                }
            }
        };
    }
}

相关问题