1. 程式人生 > >Jquery zTree例項

Jquery zTree例項

zTree【簡介】

zTree 是利用 JQuery 的核心程式碼,實現一套能完成大部分常用功能的 Tree 外掛
相容 IE、FireFox、Chrome 等瀏覽器
在一個頁面內可同時生成多個 Tree 例項
支援 JSON 資料
支援一次性靜態生成 和 Ajax 非同步載入 兩種方式
支援多種事件響應及反饋
支援 Tree 的節點移動、編輯、刪除
支援任意更換面板 / 個性化圖示(依靠css)
支援極其靈活的 checkbox 或 radio 選擇功能
簡單的引數配置實現 靈活多變的功能



【官網】

官網地址:http://www.baby666.cn/hunter/index.html

在官網能夠下載到zTree的原始碼、例項和API,其中作者pdf的API寫得非常詳細
【部分函式和屬性介紹】
核心:zTree(setting, [zTreeNodes])

這個函式接受一個JSON格式的資料物件setting和一個JSON格式的資料物件zTreeNodes,從而建立 Tree。


核心引數:setting

zTree 的引數配置都在這裡完成,簡單的說:樹的樣式、事件、訪問路徑等都在這裡配置
setting 舉例:
var setting = {
showLine: true,
checkable: true
};
因為引數太多,具體引數詳見zTreeAPI
核心引數:zTreeNodes
zTree 的全部節點資料集合,採用由JSON物件組成的資料結構,簡單的說:這裡使用Json格式儲存了樹的所有資訊
zTreeNodes的格式分為兩種:利用Json格式巢狀體現父子關係和Array簡單格式
1 帶有父子關係的標準 zTreeNodes 舉例:
var zTreeNodes = [
{"id":1, "name":"test1", "nodes":[
{"id":11, "name":"test11", "nodes":[
{"id":111, "name":"test111"}
]},
{"id":12, "name":"test12"}
]},
......
];

2 帶有父子關係的簡單 Array 格式(isSimpleData)的 zTreeNodes 舉例:

var treeNodes = [
{"id":1, "pId":0, "name":"test1"},
{"id":11, "pId":1, "name":"test11"},
{"id":12, "pId":1, "name":"test12"},
{"id":111, "pId":11, "name":"test111"},
......
];
【例項一】(Java程式碼)
1. 在頁面引用zTree的js和css:
<!-- ZTree樹形外掛 -->
<link rel="stylesheet" href="<%=root%>/Web/common/css/zTreeStyle/zTreeStyle.css" type="text/css">
<!-- <link rel="stylesheet" href="<%=root%>/Web/common/css/zTreeStyle/zTreeIcons.css" type="text/css"> -->
<script type="text/javascript" src="<%=root%>/Web/common/js/jquery-ztree-2.5.min.js"></script>
2. 在script指令碼中定義setting和zTreeNodes
var setting = {
isSimpleData : true, //資料是否採用簡單 Array 格式,預設false
treeNodeKey : "id", //在isSimpleData格式下,當前節點id屬性
treeNodeParentKey : "pId", //在isSimpleData格式下,當前節點的父節點id屬性
showLine : true, //是否顯示節點間的連線
checkable : true //每個節點上是否顯示 CheckBox
};
var treeNodes = [
{"id":1, "pId":0, "name":"test1"},
{"id":11, "pId":1, "name":"test11"},
{"id":12, "pId":1, "name":"test12"},
{"id":111, "pId":11, "name":"test111"},
];


3. 在進入頁面時生成樹結構:
var zTree;
$(function() {
zTree = $("#tree").zTree(setting, treeNodes);
});
4. 最後檢視效果:


【例項二】(從後臺獲取簡單格式Json資料)
1. 後臺程式碼封裝簡單格式Json資料:
public void doGetPrivilegeTree() throws IOException{
String s1 = "{id:1, pId:0, name:\"test1\" , open:true}";
String s2 = "{id:2, pId:1, name:\"test2\" , open:true}";
String s3 = "{id:3, pId:1, name:\"test3\" , open:true}";
String s4 = "{id:4, pId:2, name:\"test4\" , open:true}";
List<String> lstTree = new ArrayList<String>();
lstTree.add(s1);
lstTree.add(s2);
lstTree.add(s3);
lstTree.add(s4);
//利用Json外掛將Array轉換成Json格式
response.getWriter().print(JSONArray.fromObject(lstTree).toString());
}
2. 頁面使用Ajax獲取zTreeNodes資料再生成樹
var setting = {
isSimpleData : true, //資料是否採用簡單 Array 格式,預設false
treeNodeKey : "id", //在isSimpleData格式下,當前節點id屬性
treeNodeParentKey : "pId", //在isSimpleData格式下,當前節點的父節點id屬性
showLine : true, //是否顯示節點間的連線
checkable : true //每個節點上是否顯示 CheckBox
};
var zTree;
var treeNodes;
$(function(){
$.ajax({
async : false,
cache:false,
type: 'POST',
dataType : "json",
url: root+"/ospm/loginInfo/doGetPrivilegeTree.action",//請求的action路徑
error: function () {//請求失敗處理函式
alert('請求失敗');
},
success:function(data){ //請求成功後處理函式。
alert(data);
treeNodes = data; //把後臺封裝好的簡單Json格式賦給treeNodes
}
});
zTree = $("#tree").zTree(setting, treeNodes);
});
3. 最後顯示效果