http://www.ztree.me/v3/main.php 这个是ztree的官网,里面有很多实用的小例子,参考这些例子来学习,能少走不少弯路(下载的ztree里也有demo可以参考,一样的东西)。
1. jsp方面
页面导入js,css如下:
<link rel="stylesheet" type="text/css" href="<%=path %>/css/zTreeStyle/zTreeStyle.css">
<script type="text/javascript" src="<%=path %>/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="<%=path %>/js/jquery.ztree.all-3.5.min.js"></script>
设置setting属性和节点数组
<script type="text/javascript">
var setting = {
check: {
enable: true,
nocheckInherit: true
},
data: {
simpleData: {
enable: true
}
}
};
var zNodes =[
{ id:1, pId:0, name:"随意勾选 1", open:true},
{ id:11, pId:1, name:"随意勾选 1-1", open:true},
{ id:111, pId:11, name:"无 checkbox 1-1-1", nocheck:true},
{ id:112, pId:11, name:"随意勾选 1-1-2"},
{ id:12, pId:1, name:"无 checkbox 1-2", nocheck:true, open:true},
{ id:121, pId:12, name:"无 checkbox 1-2-1"},
{ id:122, pId:12, name:"无 checkbox 1-2-2"},
{ id:2, pId:0, name:"随意勾选 2", checked:true, open:true},
{ id:21, pId:2, name:"随意勾选 2-1"},
{ id:22, pId:2, name:"随意勾选 2-2", open:true},
{ id:221, pId:22, name:"随意勾选 2-2-1", checked:true},
{ id:222, pId:22, name:"随意勾选 2-2-2"},
{ id:23, pId:2, name:"随意勾选 2-3"}
];
</script>
调用方法生成树
<script type="text/javascript">
$(function(){
//alert($("#ztree").zTree);
//ztree=$("#ztree").zTree(settting,treeNodes);
$.fn.zTree.init($("#ztree"), setting, zNodes);
});
</script>
body里有个id为ztree的元素
<body>
<div class="zTreeDemoBackground left">
<ul id="ztree" class="ztree"></ul>
</div>
下面写一个含有ajax的例子
var $bookCatalogTreeList = $("#bookCatalogTreeList");
var setting = {
data: {
simpleData: {
enable: true, //如果这个设置了true下面的三个是必填的。
idKey: "gid", //主键
pIdKey: "parentId", //父亲对象的id.如果他们这个值相同那么他们是同一个父亲的子集。可以根据这个pIdKey找到对对应的idKey、就是他的父亲
rootPId: "null"
}
},
callback: {
onClick: zTreeOnClick 点击树节点所触发的事件zTreeOnClick是个函数
}
};
下面读数据
$.ajax({
url: "com.cloud.resource.service.impl.ResourceRs.findCatalogByBookId(bookId)",
data: {
bookId: bookGid
},
success: function(resdata, textStatus, jqXHRult){
if(resdata != null){
treeObj = $.fn.zTree.init($bookCatalogTreeList, setting, resdata);
}
}
});
获取当前被选中的节点数据集合。。可以把你点击选中的那个内容显示出来
var nodes = treeObj.getSelectedNodes();
if(nodes.length > 0){
var nodeGid = nodes[0].gid;
var nodeName = nodes[0].name;
$("#catalogGid").val(nodeGid);
$("#catalogName").val(nodeName);
}
碰到的问题。如果数据里面要显示的不是name的值,而是其他参数名怎么办呢?
var setting = {
data: {
simpleData: {
enable: true,
idKey: "GID",
pIdKey: "PARENTGID",
rootPId: "null"
},
key : {
name : "NAME", 加上这个就可以啦,代表显示的名字是NAME这个参数
},
},
callback: {
onClick: zTreeOnClick
},
view : {
showIcon: false
}
};
点击某个子节点获取他的父节点。
callback: {onClick: zTreeOnClick 点击树节点所触发的事件zTreeOnClick是个函数}
在这个点击事件里面获取
function zTreeOnClick(){
var nodes = treeObj.getSelectedNodes();
if (nodes[0].isParent==true){//点的这个是父级。
return;
}
else{
if(nodes.length > 0){
var gid = nodes[0].GID;
var parentItem=nodes[0].getParentNode(); //父节点
var orgParentName=parentItem.NAME; //父节点的名字
}
点击节点前的符号也能触发点击这个树的事件
因为我是通过ajax添加的树,所以要用live来绑定。
$("#bookCatalogTreeList .switch.button").die().live("click",function(){
$(this).siblings("a").trigger("click"); // 页面已经写了function zTreeOnClick()这个点击树节点的函数了,所以这里就直接触发,但是不知道是哪个a标签,所以不能zTreeOnClick()
});