拖动;在jstree中的两棵树之间掉落

时间:2013-12-07 23:14:11

标签: javascript jstree drag-and-drop

有2棵树。 菜单树类别树,两棵树中的节点都可以在树的自身树中移动(重新排序),并且类别树中的节点也可以移动(拖动& drop)到菜单树。 我绑定了move_node的回调,每次在一个节点中拖放一个节点或拖动一个节点&放到另一棵树,这个回调执行。我的代码:

// bind move node from one parnt to another event
.bind("move_node.jstree", function (e, data) {
    data.rslt.o.each(function (i) {
        $.ajax({
            async : false,
            type: 'POST',
            url: "/menus/move/",
            dataType: 'json',
            data : {
                "operation" : "move_node",
                "id" : $(this).attr("id").replace("node_",""),
                "parent" : data.rslt.cr === -1 ? 1 : data.rslt.np.attr("id").replace("node_",""),
                "oldParent" : data.rslt.op.attr("id").replace("node_",""),
                "position" : data.rslt.cp + i,
                "oldPosition" : data.rslt.cop,
                "title" : data.rslt.op.children("a").text()
            }           });
    });
})

如何检测此移动的节点是针对另一棵树还是针对同一棵树。

1 个答案:

答案 0 :(得分:3)

根据文档,data.rslt回调函数中的move_nodemove对象。

在此对象中,属性otrt(原始树实例和引用的树实例分别)可用于检查节点是在同一棵树中丢弃还是在另一棵树中丢弃:

.bind("move_node.jstree", function (e, data) {
   if(data.rslt.ot != data.rslt.rt) {
      console.log("Node was moved to a different tree-instance");
   }
   else {
      console.log("Node was moved inside the same tree-instance");
   }
});