2014-02-28 39 views
0

是否有一种简单的方法可以避免用户将文件夹放到文件上&?Dynatree在非文件夹上禁用放置

dynatree中有一个小脚本,用于检查是否尝试将文件移动到原来的位置。然后它显示一个小红叉以向用户显示这个点是不可丢弃的。

是否有解决方法使用相同的方法使文件夹只能放置? (我在过去使用jstree,还有你可以对此进行设置,但dynatree具有一定的优势,以我目前的项目,所以我想切换到dynatree ...)

回答

0

你可以简单地在onDragStart或返回falseonDrop回调来控制此:

$("#tree").dynatree({ 
    ... 
    dnd: { 
     preventVoidMoves: true, // Prevent dropping nodes 'before self', etc. 
     onDragStart: function(node) { 
     /** This function MUST be defined to enable dragging for the tree. 
     * Return false to cancel dragging of node. 
     */ 
     return true; 
     }, 
     onDragEnter: function(node, sourceNode) { 
     /** sourceNode may be null for non-dynatree droppables. 
     * Return false to disallow dropping on node. In this case 
     * onDragOver and onDragLeave are not called. 
     * Return 'over', 'before, or 'after' to force a hitMode. 
     * Return ['before', 'after'] to restrict available hitModes. 
     * Any other return value will calc the hitMode from the cursor position. 
     */ 
     // Prevent dropping a parent below another parent (only sort 
     // nodes under the same parent) 
     if(node.parent !== sourceNode.parent){ 
      return false; 
     } 
     // Don't allow dropping *over* a node (would create a child) 
     return ["before", "after"]; 
     }, 
     onDrop: function(node, sourceNode, hitMode, ui, draggable) { 
     /** This function MUST be defined to enable dropping of items on 
     * the tree. 
     */ 
     sourceNode.move(node, hitMode); 
     } 
    } 

看一看本实施例的源代码 http://wwwendt.de/tech/dynatree/doc/sample-dnd.html