bootstrap-treeview的完善(父子節點的全選與反選)


效果圖

 1 // 選中父節點時,選中所有子節點
 2     function getChildNodeIdArr(node) {   
 3         var ts = [];  
 4         if (node.nodes) {    
 5             for (x in node.nodes) {     
 6                 ts.push(node.nodes[x].nodeId);     
 7                 if (node.nodes[x].nodes) {      
 8                     var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);      
 9                     for (j in getNodeDieDai) {       
10                             ts.push(getNodeDieDai[j]);     
11                     }     
12                 }    
13             }   
14         } else {    
15             ts.push(node.nodeId);   
16         }   
17         return ts;  
18     }   
 1 // 選中所有子節點時,選中父節點 取消子節點時取消父節點
 2     function setParentNodeCheck(node) {   
 3         var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);   
 4         if (parentNode.nodes) {    
 5             var checkedCount = 0;    
 6             for (x in parentNode.nodes) {     
 7                 if (parentNode.nodes[x].state.checked) {      
 8                     checkedCount ++;     
 9                 } else {      
10                     break;     
11                 }    
12             }    
13             if (checkedCount == parentNode.nodes.length) {  //如果子節點全部被選 父全選
14                 $("#treeview-checkable").treeview("checkNode", parentNode.nodeId);
15                 setParentNodeCheck(parentNode);    
16             }else {   //如果子節點未全部被選 父未全選
17                 $('#treeview-checkable').treeview('uncheckNode', parentNode.nodeId); 
18                 setParentNodeCheck(parentNode);        
19             }   
20         }  
21     }     
 1 // 取消父節點時 取消所有子節點
 2     function setChildNodeUncheck(node) { 
 3         if (node.nodes) {   
 4             var ts = [];    //當前節點子集中未被選中的集合 
 5             for (x in node.nodes) { 
 6                 if (!node.nodes[x].state.checked) {  
 7                     ts.push(node.nodes[x].nodeId);  
 8                 } 
 9                 if (node.nodes[x].nodes) {      
10                     var getNodeDieDai = node.nodes[x];
11                     console.log(getNodeDieDai);      
12                     for (j in getNodeDieDai) {
13                         if (!getNodeDieDai.nodes[x].state.checked) {        
14                             ts.push(getNodeDieDai[j]); 
15                         }    
16                     }     
17                 }    
18             }   
19         }
20         return ts;  
21     }
 1 onNodeChecked: function(event, node) { //選中節點 
 2                 var selectNodes = getChildNodeIdArr(node); //獲取所有子節點      
 3                 if (selectNodes) { //子節點不為空,則選中所有子節點       
 4                     $('#treeview-checkable').treeview('checkNode', [selectNodes, { silent: true }]);     
 5                 }     
 6                 var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);      
 7                 setParentNodeCheck(node);   
 8           },    
 9           onNodeUnchecked: function(event, node) { //取消選中節點  
10                 // 取消父節點 子節點取消
11                 var selectNodes = setChildNodeUncheck(node); //獲取未被選中的子節點 
12                 var childNodes = getChildNodeIdArr(node);    //獲取所有子節點 
13                 if (selectNodes && selectNodes.length==0) { //有子節點且未被選中的子節點數目為0,則取消選中所有子節點   
14                   console.log("反選");   
15                   $('#treeview-checkable').treeview('uncheckNode', [childNodes, { silent: true }]);      
16                 }  
17                 // 取消節點 父節點取消
18                 var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);  //獲取父節點
19                 var selectNodes = getChildNodeIdArr(node);     
20                 setParentNodeCheck(node); 
21           }   
22         });

 

以上部分是本人研究,有錯漏之處請見諒/ *-*/.....

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM