2013-12-07 196 views
4

有2棵樹。 菜單樹類別樹,樹中的一個節點可以在其樹中移動(重新排序),同時類別樹中的節點可以移動(拖放)到菜單樹。 我綁定了move_node的回調函數,每當一個節點在其樹中拖拽時,或者拖拽一個被拖拽到另一棵樹上的節點時,該回調函數就會執行。我的代碼:jstree中兩棵樹之間的拖放

// 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() 
      }   }); 
    }); 
}) 

如何檢測此移動的節點是針對另一棵樹還是針對同一棵樹。

回答

3

根據文檔,move_node回調函數中的data.rslt是一個move對象。

在該對象的屬性和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"); 
    } 
});