
html代碼:
1 <form>
2 <div id="treeview" class="treeview"></div>
3 </form>
js代碼:
1.要顯示的數據(json字符串):
1 var data = '[{"text":"長沙","state":{"expanded":false}, 2 "nodes":[{"text":"雨花區"},{"text":"岳麓區"},{"text":"芙蓉區"},{"text":"天心區"}]}, 3 {"text":"岳陽","state":{"expanded":false}, 4 "nodes":[{"text":"岳陽樓區"},{"text":"雲溪區"},{"text":"臨湘"}]}, 5 {"text":"湘潭"},{"text":"株洲"}]';
2.初始化以及JS數據綁定,加載TreeView
1 $('#treeview').treeview({//初始化 2 data: data, 3 showTags: true, 4 showCheckbox: true, 5 levels:1,//設置繼承樹默認展開的級別設置繼承樹默認展開的級別 6 onNodeChecked: function(event,node){//選中節點 7 var selectNodes= getChildNodeIdArr(node);//獲取所有節點 8 if(selectNodes){//如果子節點不為空,即存在子節點,則選中所有子節點 9 //選擇指定的節點,接收節點或節點ID 10 $('#treeview').treeview('checkNode',[selectNodes,{silent:true}]) 11 request("post","A",{list: JSON.stringify(selectNodes)}); 12 } 13 //返回給定節點ID的單一節點對象 14 var parentNode=$('#treeview').treeview("getNode",node.parentId); 15 setParentNodeCheck(node); 16 }, 17 onNodeUnchecked:function(event,node){//取消選中節點 18 var selectNodes=getChildNodeIdArr(node); 19 if(selectNodes){//子節點不為空,則取消選中所有子節點 20 $('#treeview').treeview("uncheckNode",[selectNodes,{silent:true}]); 21 request("post","B ",{list: JSON.stringify(selectNodes)}); 22 } 23 } 24 });
3.自定義方法找到所有子節點
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 } 19 20 function setParentNodeCheck(node) { 21 var parentNode = $("#treeview").treeview("getNode", node.parentId); 22 if(parentNode.nodes) { 23 var checkedCount = 0; 24 for(x in parentNode.nodes) { 25 if(parentNode.nodes[x].state.checked) { 26 checkedCount++; 27 } else { 28 break; 29 } 30 } 31 if(checkedCount === parentNode.nodes.length) { 32 $("#treeview").treeview("checkNode", parentNode.nodeId); 33 setParentNodeCheck(parentNode); 34 } 35 } 36 } 37 38 function request(type,url,data) { 39 $.ajax({ 40 type: type, 41 url: url, 42 data: data, 43 success: function(d) { 44 alert(JSON.parse(d)); //將對象轉換成字符串 45 }, 46 error: function(d) { 47 alert(d.responseText); //將對象轉換成字符串 48 } 49 }); 50 }
這里用到TreeView的方法有:
1.checkNode(node | nodeId, options):選擇指定的節點,接收節點或節點ID。
$('#tree').treeview('checkNode', [ nodeId, { silent: true } ]);觸發nodeChecked事件,傳入silent來阻止其它事件。
2.getNode(nodeId):返回給定節點ID的單一節點對象。
$('#tree').treeview('getNode', nodeId);
