重点:setting.callback.beforeDrop 返回 false,zTree 将恢复被拖拽的节点。
思路:利用该特性,可以在 beforeDrop 具体实现中判断是否在兄弟节点间拖拽。
//zTree配置
var setting = {
edit: {
enable: true,
showRemoveBtn: false,
showRenameBtn: false
},
data: {
simpleData: {
enable: true
}
},
callback: {
beforeDrop: beforeDrop //拖拽操作结束之前的事件回调,该处用于判断是否兄弟节点间拖动
}
};
//仅亲兄弟节点间可拖动
function beforeDrop(treeId, treeNodes, targetNode, moveType) {
var moveNode = treeNodes[0];
switch (moveType)
{
case "prev":
case "next":
if (moveNode.pId == targetNode.pId) {
return true;
}
break;
case "inner":
if (moveNode.pId == targetNode.pId) {
return true;
}
break;
}
return false;
}
//所有同层级节点间可拖动
function beforeDrop(treeId, treeNodes, targetNode, moveType) {
var moveNode = treeNodes[0];
switch (moveType) {
case "prev":
case "next":
if (moveNode.level == targetNode.level) {
return true;
}
break;
case "inner":
if (moveNode.level == targetNode.level + 1) {
return true;
}
break;
}
return false;
}
原文章链接添加链接描述