[英]Dynatree disable drop on non-folders
有没有一种简单的方法可以避免用户将文件和文件夹拖放到文件上?
dynatree中有一个小脚本,用于检查您是否尝试将文件移到原来的位置。 然后,它会显示一个红色的小叉,向用户显示该点不可放置。
有没有使用相同方法仅使文件夹可拖放的解决方法? (我过去使用过jstree,可以在其中进行设置,但是dynatree对我当前的项目有一些优势,因此我想切换到dynatree ...)
您可以简单地在onDragStart
或onDrop
回调中返回false
来控制它:
$("#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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.