項目要求,需要向後臺傳遞已經勾選的路徑,如 l1-a, l1-l3-c,l1-l3-d;(如果是全選狀態則只傳遞全選狀態的路徑,不傳子節點)。 具體可以參考jQ Ztree 的 v3.5 版本 Metro 風格的demo 主要描述onCheck : 上面代碼,oArr 取的是根節點的路徑,nArr ...
項目要求,需要向後臺傳遞已經勾選的路徑,如 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中碰到多選構造路徑遇到的麻煩。