ztree移除节点时,父节点只有该节点一个子节点时,同时移除父节点
江湖俗话讲:人狠,话不多,直接上代码
//移除当前节点
function removeNode(nodeList, currentId) {
var parentId = getParentNode(nodeList, currentId);
if (parentId!=""){
var bolOne = isHasOneSubNode(nodeList, parentId);
//移除当前节点
for (var i=0;i<nodeList.length;i++){
if (currentId==nodeList[i].id){
nodeList.splice(i,1);
break;
}
}
if (bolOne){
//如果父节点只有一个子节点,则移除父节点
removeNode(nodeList, parentId);
}
}
return nodeList;
}
//判断是否只有一个子节点
function isHasOneSubNode(nodeList, currentId){
var total = 0;
for (var i=0;i<nodeList.length;i++){
if (currentId==nodeList[i].pId && nodeList[i].pId!=nodeList[i].id){
total++;
}
}
var oneSubNode = total>1?false:true;
return oneSubNode;
}
//取得父节点ID
function getParentNode(nodeList, currentId) {
var parentId = "";
//循环查询结果
for (var i=0;i<nodeList.length;i++){
if (currentId==nodeList[i].id){
parentId = nodeList[i].pId;
break;
}
}
return parentId;
}