此处上级菜单如果修改为当前菜单或当前节点的父节点将会出错
系统管理本就是最高节点了
产生的问题
//zTree确定按钮事件处理函数
function doSetSelectNode(){
//1.获取选中的节点对象
var nodes=zTree.getSelectedNodes();
if(nodes.length==1){
// 选择节点
var selectedNode=nodes[0];
console.log("selectNode",selectedNode);
// 当前节点 获取
var rowData=$("#mainContentId").data("rowData");
if(rowData){//修改时做如下处理
//判定当前选中的上级菜单节点是否为当前要修改节点的子节点.
// 当前节点 选择节点
var flag=isChild(rowData.id,selectedNode);
if(flag){
alert("不能选择当前节点以及对应子节点");
return;
}
}
//2.将对象中内容,填充到表单
$("#parentId").data("parentId",selectedNode.id);
$("#parentId").val(selectedNode.name);
}
//3.隐藏树对象
doHideTree();
}
当前节点等于选择节点返回true 选择节点无父节点,表示是最高级别的节点来修改上级节点可以
返回false 若这个选择节点经过递归的父节点等于当前节点 返回true
//判定当前选中节点是否是当前节点的子节点
//当前节点 选择节点
function isChild(currentNodeId,selectNode){
// 选择节点 =/= 当前节点
if(selectNode.id==currentNodeId)return true;
// 选择节点的父节点
// false null
var node=selectNode.getParentNode();
// true
if(!node)return false;
return isChild(currentNodeId,node);
}