一、ztree中如何判断当前节点是唯一的子节点
- 方法一
var treeObj = $.fn.zTree.getZTreeObj("tree");
var sNodes = treeObj.getSelectedNodes();
if (sNodes.children.length == 1) {
treeObj .removeNode(sNodes[0].getParentNode());
treeObj .removeNode(sNodes[0]);
}
- 方法二
var treeObj = $.fn.zTree.getZTreeObj("tree");
var sNodes = treeObj.getSelectedNodes();
if (sNodes.length > 0) {
//查看当前被选中的节点是否是同级节点中的第一个节点
// 查看当前被选中的节点是否是同级节点中的最后一个节点
if(sNodes[0].isFirstNode && sNodes[0].isLastNode){
treeObj .removeNode(sNodes[0].getParentNode());
treeObj .removeNode(sNodes[0]);
console.log("该节点是当前父节点下的唯一子节点");
};
}
二、获取全部的子节点
getNodes() 只能获取当前节点下的直接子节点
通过zTree官方API的方法获取得到的是一个包含所有子节点的根节点(子节点都处于 children 属性下)
- 方法一: 通过递归的方式(此处就不提及了)
- 方法二:通过zTreet提供的方法
var treeObj = $.fn.zTree.getZTreeObj(”tree“);
var node = treeObj.getNodes();
var nodes = treeObj.transformToArray(node);
//获取根节点下的所有子节点
var rootChild = treeObj.getNodes()[0].children;
var allNodesNoRoot = treeObj.transformToArray(rootChild);
注意: 通过transformToArray方法获取的父节点对象中仍然包含children属性, 如果将得到的节点数组通过init方法刷新树数据会出现节点重复的现象。
removeChildNodes() 清空某父节点的子节点。
1、清空子节点后,父节点会自动变为叶子节点,如需要父节点保持父节点状态,请设置 setting.data.keep.parent 属性。
2、请勿用此方法清空根节点,如果需要清空根节点,直接初始化 zTree,并且设置初始节点为 null 即可。
3、此方法不会触发任何事件回调函数。
//清空选中的第一个节点的子节点
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes && nodes.length>0) {
treeObj.removeChildNodes(nodes[0]);
}
更新节点信息
treeObj.updateNode(node);
删除节点
treeObj.removeNode(node);
选择节点
treeObjselectNode(node);
网友评论