今天在做zTree樹的時候想着將第一級tree展開,於是利用下面方法:
/** * 展開樹節點的第一層 */ function openFirstTreenode(){ // 獲取樹對象 var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); /* 獲取所有樹節點 */ var nodes = treeObj.transformToArray(treeObj.getNodes()); //當再次點擊節點時條件不符合,直接跳出方法 // 遍歷樹節點設置樹節點為選中 for (var i = 0, length_1 = nodes.length; i < length_1; i++) { if(nodes[i].level == 0){ alert(nodes[i].open) nodes[i].open = true; } } }
根據ztree的官網介紹,open屬性是設置是否展開此節點,level是樹的等級。可是發現這種方法只能展開除一級之外的其他節點,對根節點卻不生效,百度找到以下方法:
下面會直接展開第一級樹:
/** * 展開樹節點的第一層 */ function openFirstTreenode(){ // 獲取樹對象 var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); /* 獲取所有樹節點 */ var nodes = treeObj.transformToArray(treeObj.getNodes()); //展開第一級樹 treeObj.expandNode(nodes[0], true); }
效果:
如果想展開樹的所有節點,需要以下JS:
/** * 展開樹的所有節點 */ function openAllTreenode(){ // 獲取樹對象 var treeObj = $.fn.zTree.getZTreeObj("treeDiv"); /* 獲取所有樹節點 */ var nodes = treeObj.transformToArray(treeObj.getNodes()); // 展開除第一級之外的其他節點 for (var i = 0, length_1 = nodes.length; i < length_1; i++) { if(nodes[i].level == 0){ continue; } nodes[i].open = true; } //展開第一級節點 treeObj.expandNode(nodes[0], true); }
效果:
補充: expandNode方法的官方解釋:
展開樹的第一層節點關閉其他層節點的操作
/** * 展開樹節點的第一層且關閉其他節點 */ function openFirstTreenode(){ // 獲取樹對象 var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); /* 獲取所有樹節點 */ var nodes = treeObj.transformToArray(treeObj.getNodes()); // 關閉所有節點 for (var i = 0, length_1 = nodes.length; i < length_1; i++) { treeObj.expandNode(nodes[i], false);//第二個參數為false證明是折疊 } //展開第一級節點 treeObj.expandNode(nodes[0], true);//第二個參數為true證明是展開 }