【问题标题】:attach function to before.jstree将函数附加到 before.jstree
【发布时间】:2016-04-15 12:18:53
【问题描述】:

我正在尝试防止删除 jstree 中的根节点。在早期版本中,有 before.jstree 事件,您可以使用它来执行此操作:

.on("before.jstree", function (e, data) {
    if(data.func === "delete_node") {
        if (data.node.type == "root_node" || true)
        {
            e.stopImmediatePropagation();
            return false;
        }
    }
})

但是由于在 jstree 3(https://www.jstree.com/api/) 中已经砍掉了 before.jstree 方法,所以这种方法不再起作用了。有没有不操纵上下文菜单事件的替代解决方案?

【问题讨论】:

  • 如何删除节点?它是上下文菜单吗?如果选择了根节点,您可以隐藏该选项吗?

标签: javascript jquery treeview jstree


【解决方案1】:

您可以使用jstree.core.check_callback 属性来实现此目的。该属性在每个 jstree 事件触发之前计算,它需要一个布尔值 - true 继续调用事件处理程序,false 阻止它。
您可以为此属性附加一个回调函数,并根据触发的事件做出决定。在您的情况下,如果触发的事件是delete_node,并且事件目标节点是根,您可以返回false 以阻止该事件。

$('#tree').jstree({
    'core' : {
        'check_callback' : function (operation, node, node_parent, node_position, more) {
            if ((operation == "delete_node" && node.type && node.type == "root") {
                return false;
            }
            return true;
        }
    }
});

【讨论】:

  • @kayess:感谢您的建议。编辑了我的答案以添加解释。
猜你喜欢
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 2019-11-19
  • 2021-07-02
相关资源
最近更新 更多