39,087
社区成员
发帖
与我相关
我的任务
分享
var setting = {
callback: {
onClick: zTreeOnClick
},
view: {
dblClickExpand: false
}
};
var menuJSON = JSON.parse(result);
var zNodes = new Array();
formatMenuJSON(menuJSON.MenuP, zNodes); //这是我自定义的一个将返回值转换成ztree需要的格式的函数
var zTreeObj = $.fn.zTree.init($("#ztree"), setting, zNodes);
function zTreeOnClick(event, treeId, treeNode) {
if (treeNode.dataurl) alert(treeNode.dataurl); //dataurl是自定义的一个节点属性
//你可以判断它是否包含isparent属性,有这个属性的表示含有子节点,没有的,就是叶子节点
else {
var treeObj = $.fn.zTree.getZTreeObj("ztree");
treeObj.expandNode(treeNode);
}
};
就这么几条语句就搞定了,自己编写不是不可以,但是对于细节调试太费时间了,一个小的不理想,要调试很久,甚至可能重写大量代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#box .child{
padding-left:20px;
}
</style>
</head>
<div id="box"></div>
<body>
<script src="../../js/jquery@2.2.4.js"></script>
<script>
$(function(){
let treeNode=[{
name:"treeNode1",
child:[{
name:"treeNode2",
child:[{
name:"treeNode3",
child:[]
}]
},{
name:"treeNode2",
child:[{
name:"treeNode3",
child:[]
}]
}]
}]
function createNode(arr,dom){
arr.forEach(e=>{
let child= $("<details class='child'></details>");
child.append($(`<div>${e.name}</div>`))
if(e.child.length){
let child2=$("<details class='child'></details>");
child.append(child2)
createNode(e.child,child2)
}
dom.append(child)
})
}
createNode(treeNode,$("#box"))
})
</script>
</body>
</html>