【问题标题】:JsTree - Trigger action after deleting a nodeJsTree - 删除节点后触发动作
【发布时间】:2019-07-27 08:20:52
【问题描述】:

这里的查询真的很简单,jsTree 文档很糟糕,我尝试的许多其他解决方案都没有成功,所以问。

我正在使用自定义菜单删除节点,然后我想从我的 DOM 更新与该节点关联的一些标记。节点删除正确,但是其他 DOM 操作都不起作用!实际上没有找到元素本身。尝试记录长度,并三重检查选择器,没有运气。

$("#tree").on('changed.jstree', function(e, data) {
        var currentNode = $(this).jstree('get_selected')[0];
        // Do something with the node, works perfectly

        }).on('delete_node.jstree', function() {
            // NOT WORKING
            $('.node-props-list').hide();
        }).jstree({
            core: {
                data: formatted,
                check_callback: true,
                loaded: true
            },
            plugins: ['contextmenu'],
            contextmenu: {
                items: function ($node) {
                    var tree = $('#tree').jstree(true);
                    return {
                        "Remove": {
                            "separator_before": false,
                            "separator_after": false,
                            "label": "Remove",
                            "action": function () {
                                // NOT WORKING EITHER
                                $('.node-props-list').hide();
                                tree.delete_node($node);
                            }
                        }
                    }
                }
            }
        });

我该如何解决这个问题?

【问题讨论】:

    标签: javascript dom events jstree


    【解决方案1】:

    我自己想出来的。该操作必须在删除语句之后完成。更改这些行的顺序修复了它。他们的文档很糟糕。只需发布remove 部分:

    "Remove": {
        "separator_before": false,
        "separator_after": false,
        "label": "Remove",
        "action": function () {
            // NOT WORKING EITHER
            $('.node-props-list').hide();
            tree.delete_node($node);
        }
    }
    

    希望这可以帮助卡住的人!

    【讨论】: