Ztree 多選,顯示勾選的路徑


項目要求,需要向后台傳遞已經勾選的路徑,如 l1-a, l1-l3-c,l1-l3-d;(如果是全選狀態則只傳遞全選狀態的路徑,不傳子節點)。

具體可以參考jQ  Ztree 的 v3.5 版本  

Metro 風格的demo

 1 var mesetting = {
 2             view: {
 3                 addHoverDom: addHoverDom,
 4                 removeHoverDom: removeHoverDom,
 5                 selectedMulti: true,
 6                 showIcon:true,
 7                 showLine:true,
 8                 dblClickExpand: false//禁用雙擊展開父節點功能
 9             },
10             edit: {
11                 enable: false,
12                 showRemoveBtn: false,//設置刪除按鈕是否顯示
13                 showRenameBtn: false,//設置編輯按鈕是否顯示
14                 drag: {//禁用拖拽
15                     isCopy: false,
16                     isMove: true
17                 }
18             },
19             check: {
20                 enable: true
21             },
22             data: {
23                 simpleData: {
24                     enable: true
25                 }
26             },
27             callback: {
28                 onClick: onClick,
29                 onCheck: onCheck
30             }
31         };

主要描述onCheck :

 1 var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
 2            var nodes = treeObj.getCheckedNodes(true);
 3            var oArr = [],nArr = [],oId;
 4            $.each(nodes,function (index,item){
 5                if (item.check_Child_State == 2 && !item.pId){
 6                    oArr.push(item);
 7 
 8                }
 9 
10                if (item.check_Child_State == 2 && item.pId){
11                    oId = item.id;
12                    nArr.push(item);
13                } else if (item.check_Child_State == -1 && item.pId != oId){
14                    nArr.push(item);
15                }
16            });

上面代碼,oArr 取的是根節點的路徑,nArr 取出的是根節點為半選狀態的路徑;

主要遇到一個坑就是下面要描述的 運用遞歸去 找出我要的路徑結果:

 1 function getFilePath(treeNode){
 2                     if(treeNode==null)return "";
 3                       var filename = treeNode.name;
 4                       rootName = treeNode.name;
 5                       var pNode = treeNode.getParentNode();
 6 
 7                       if(pNode!=null){
 8 //                        oldName == '' ? path.push(pNode.name + ',' + filename) : path.push(pNode.name + ',' + oldName);
 9                         oldName == '' ? newName = pNode.name + ',' + filename : newName = pNode.name + ',' + oldName;
10                         oldName = pNode.name + ',' + filename;
11                       filename = getFilePath(pNode);
12 
13                       }
14                     path.push(newName);
15                       return filename,oldName = '',newName = '';
16             }

 

然后 發現這個path 是含有空的一個數組,希望大神能給看看上面情況。我處理的是對數組進行去空了操作

 1 //去除數組中的空值
 2             function trimSpace(array){
 3                  for(var i = 0 ;i<array.length;i++)
 4                  {
 5                      if(array[i] == "" || typeof(array[i]) == "undefined")
 6                      {
 7                               array.splice(i,1);
 8                               i= i-1;
 9 
10                      }
11                  }
12                  return array;
13             }

以上僅代表個人在使用這個ztree中碰到多選構造路徑遇到的麻煩。


免責聲明!

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



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