jstree在root之前和之后拖放限制节点

Ash*_*win 7 javascript tree jquery drag-and-drop jstree

在我的jstree中,我有一个Root节点,它是所有节点的父节点.我用过dnd插件.我想允许在树中的任何地方拖放,但只允许在根内部,即不在Root之前或之后.

- [Root]
   - Node 1
      - Node 1.1
      - Node 1.2
   + Node 2
   - Node 3
      + Node 3.1
Run Code Online (Sandbox Code Playgroud)

在使用论坛检查后,我发现该drag_check事件仅适用于外部节点,而不适用于树中的任何节点.要验证相同的树节点,我们需要使用crrm -> check_move事件.这是我需要帮助的地方.如果节点在之前或之后被丢弃,我想返回false [Root].

这是开始的小提琴 - http://jsfiddle.net/juyMR/23/

Joh*_*145 7

在当前版本的jstree(3.0.1)中,有一个更简单的解决方案,您必须使用的一切

"types" : {     
       "#" : {
            "max_children" : 1
        }
    },
Run Code Online (Sandbox Code Playgroud)

如果您使用的是类型插件,则有两种预定义类型.一个是上面使用的"#".这自动用于树的"真实"根元素,这意味着内部使用的元素.因此,如果您将自己的根添加为第一个节点而没有任何额外的配置,一切都会正常工作.


Blo*_*sie 3

你已经非常接近了,你只需要一个 else 语句即可返回 true

http://jsfiddle.net/blowsie/juyMR/59/

 "crrm" : {
        "move" : {
            "check_move" : function (data) {
               // alert(data.r.attr("id"));
                if(data.r.attr("id") == "999") {
                    return false;
                }
                else {
                    return true;
                }
            }
        }
    },
Run Code Online (Sandbox Code Playgroud)