如何拒绝删除/重命名/移动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”和“上下文菜单”插件拒绝删除/移动/重命名“reference”和“recycle bin”节点

为了避免使用crrm插件移动,您可以:

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

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

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

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

 .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; } })