如何拒绝删除/重命名/移动jsTree中的根(或其他)节点?

时间:2012-03-23 09:44:07

标签: jquery jstree

例如:

[{
"data": "reference",
"attr": {
    "id": "0"
},
"state": "open",
"children": [
    [{
        "data": "one",
        "attr": {
            "id": "1"
        },
        "state": "closed"
    }, {
        "data": "two",
        "attr": {
            "id": "2"
        }
    }]
]
}, {
"data": "recycle bin",
"attr": {
    "id": "bin"
},
"state": "closed",
"children": []
}]

我需要拒绝删除/移动/重命名“参考”&带有“dnd”,“crrm”和“上下文菜单”插件的“回收站”节点

2 个答案:

答案 0 :(得分:2)

为避免使用crrm plugin进行移动,您可以这样做:

"crrm": {
   "move": {
      "check_move": function(m) { return (m.o[0].id !== "0" && m.o[0].id !== "bin"); }
   }
}

总之,您需要返回TRUE以允许移动,否则返回FALSE。因此,检查移动的节点ID不是引用,还是回收站

请查看jsTree documentation以完成其他任务,因为您需要的一切都在那里。不要偷懒: - )

答案 1 :(得分:1)

您可以捕获节点删除事件并检查节点的元数据:

.bind('delete_node.jstree', function (e, data) {
    // Check medatada, assuming that root's parent_id is NULL:
    if (data.rslt.obj.attr('parent_id') == null) {
       alert('Root folder is here to stay.');
       e.stopImmediatePropagation();
       return false;
    }
})