禁用从一个级别拖放到另一个级别

Tho*_*oub 3 jstree jstree-dnd

我有一个由组成的树视图,我想禁用拖放节点从一个级别到另一个级别.我们来举个例子:

  • 分行1
    • 叶子1
    • 叶2
    • 叶3
  • 分支2
    • 叶4
    • 叶5
  • 分公司3
    • 叶6
    • 叶7
  • 分公司4
    • 叶8

我希望用户能够移动分公司/重新排序叶子和重新排序的分支,但不提倡leaf作为branch或降级branch的leaf.

我已经开始看一下这个文件jstree.dnd.js来改变这个版本,但不幸的是它已经超出了我的联盟.

我怎样才能做到这一点?

vak*_*ata 5

您可以使用jstree types插件.只需将其包含在配置plugins数组中即可.然后相应地配置节点(为节点分配类型,确保它type在JSON中具有属性).

这是一个配置示例:

"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" : []
    }
},
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http:
//jsfiddle.net/DGAF4/560/

您可以在repo和docs页面上阅读有关类型插件的更多信息.

请记住,您可以使用该core.check_callback功能并避免使用类型插件 - 它将为您提供完全手动控制,但使用起来有点复杂.如果上述因某些原因不适合您,我可以详细说明.