我已经从jstree形成了一个树视图,我想禁用拖动节点从一个级别到另一个级别。让我们举一个例子:
我希望用户能够移动分支/重新排序叶子&重新订购分支,但不会将leaf
宣传为branch
或将branch
降级为leaf
。
我已经开始查看档案jstree.dnd.js
来改变档案,但遗憾的是它已经退出了我的联盟。
我该怎么做?
答案 0 :(得分:5)
您可以使用jstree types
插件。只需将其包含在config plugins
数组中即可。然后相应地配置节点(为节点分配类型,确保它在JSON中具有type
属性)。
以下是配置示例:
"types" : {
"#" : { // the root node can have only "branch" children
"valid_children" : ["branch"]
},
"branch" : { // any "branch" can only have "leaf" children
"valid_children" : ["leaf"]
},
"leaf" : { // "leaf" typed nodes can not have any children
"valid_children" : []
}
},
这是一个演示:
http://jsfiddle.net/DGAF4/560/
您可以在repo和docs页面上阅读有关类型插件的更多信息。
请记住,您可以使用core.check_callback
功能并避免使用类型插件 - 它将为您提供完全手动控制,但使用起来有点复杂。如果上述因某些原因不适合你,我可以详细说明。
答案 1 :(得分:0)
恕我直言,不使用类型插件的解决方案确实要简单得多。您只需要检查父ID:
$('#jstree').jstree({
'core': {
'check_callback' : function (operation, node, node_parent, node_position, more) {
if (operation === 'move_node' && node.parent !== node_parent.id) {
return false;
}
return true;
}
},
'plugins': ['dnd']
});