Ztree

一、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);

你可能感兴趣的:(Ztree)