ztree+ajax+json请求,实现加载一棵ztree树

以你之姓@ 2023-01-01 03:49 285阅读 0赞

前面的话:zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据。

ztree官方文档:http://www.treejs.cn/v3/api.php


现在写了一个小的demo,具体可以参考官方文档,从文档上拿来一串json数据,放在前端的代码里面,方便大家查看效果,以及方便后端返回的数据。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>ztree</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <link rel="stylesheet" type="text/css" href="ztree_v3/css/zTreeStyle/zTreeStyle.css" />
  7. <link rel="stylesheet" type="text/css" href="ztree_v3/ztree_custom.css" />
  8. <script src="js/jquery-2.1.1.min.js"></script>
  9. <script src="ztree_v3/js/jquery.ztree.core-3.5.min.js"></script>
  10. <script src="ztree_v3/js/jquery.ztree.excheck-3.5.min.js"></script>
  11. <script src="ztree_v3/js/jquery.ztree.exedit-3.5.min.js"></script>
  12. </head>
  13. <body>
  14. <div class="content_wrap">
  15. <div class="zTreeDemoBackground left">
  16. <ul id="sys" class="ztree"></ul>
  17. </div>
  18. </div>
  19. </body>
  20. <script type="text/javascript">
  21. var setting = {
  22. view: {
  23. showLine: false, //不显示连接线
  24. //showIcon: showIconForTree //不显示文件夹图标(调用showIconForTree())
  25. },
  26. data: {
  27. simpleData: {
  28. enable: true
  29. }
  30. }
  31. };
  32. var nodes = [
  33. { id: 1, pId: 0, name: "父节点1 - 展开", open: false }, //根据pId参数指定父结点
  34. { id: 11, pId: 1, name: "父节点11 - 折叠" },
  35. { id: 111, pId: 11, name: "叶子节点111" },
  36. { id: 112, pId: 11, name: "叶子节点112" },
  37. { id: 113, pId: 11, name: "叶子节点113" },
  38. { id: 114, pId: 11, name: "叶子节点114" },
  39. { id: 12, pId: 1, name: "父节点12 - 折叠" },
  40. { id: 121, pId: 12, name: "叶子节点121" },
  41. { id: 122, pId: 12, name: "叶子节点122" },
  42. { id: 123, pId: 12, name: "叶子节点123" },
  43. { id: 124, pId: 12, name: "叶子节点124" },
  44. { id: 13, pId: 1, name: "父节点13 - 没有子节点", isParent: false },
  45. { id: 2, pId: 0, name: "父节点2 - 折叠" },
  46. { id: 21, pId: 2, name: "父节点21 - 展开", open: false },
  47. { id: 211, pId: 21, name: "叶子节点211" },
  48. { id: 212, pId: 21, name: "叶子节点212" },
  49. { id: 213, pId: 21, name: "叶子节点213" },
  50. { id: 214, pId: 21, name: "叶子节点214" },
  51. { id: 22, pId: 2, name: "父节点22 - 折叠" },
  52. { id: 221, pId: 22, name: "叶子节点221" },
  53. { id: 222, pId: 22, name: "叶子节点222" },
  54. { id: 223, pId: 22, name: "叶子节点223" },
  55. { id: 224, pId: 22, name: "叶子节点224" },
  56. { id: 23, pId: 2, name: "父节点23 - 折叠" },
  57. { id: 231, pId: 23, name: "叶子节点231" },
  58. { id: 232, pId: 23, name: "叶子节点232" },
  59. { id: 233, pId: 23, name: "叶子节点233" },
  60. { id: 234, pId: 23, name: "叶子节点234" },
  61. { id: 3, pId: 0, name: "父节点3 - 没有子节点", isParent: true }
  62. ];
  63. /*function showIconForTree(treeId, treeNode) {
  64. return !treeNode.isParent;
  65. };*/
  66. $(document).ready(function() {
  67. $.fn.zTree.init($("#sys"), setting, nodes);
  68. });
  69. </script>
  70. </html>

在浏览器里面打开,效果如图所示:

26141be5e31ae607e1ff24448ec2b6df.png

把demo放在了github上面,有需要的可以自行下载;github:https://github.com/wangxiaoting666/ztree

现在如果是把数据放在json里面,通过ajax去请求,动态渲染出来。
这里的一切插件直接去前面给到的ztree的官方网站上去下载到本地,就可以直接引用了。
demo如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>ztree</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <link rel="stylesheet" type="text/css" href="ztree_v3/css/zTreeStyle/zTreeStyle.css" />
  7. <link rel="stylesheet" type="text/css" href="ztree_v3/ztree_custom.css" />
  8. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
  9. <script src="ztree_v3/js/jquery.ztree.core-3.5.min.js"></script>
  10. <script src="ztree_v3/js/jquery.ztree.excheck-3.5.min.js"></script>
  11. <script src="ztree_v3/js/jquery.ztree.exedit-3.5.min.js"></script>
  12. </head>
  13. <body>
  14. <ul id="zTree" class="ztree" style="background: #0b2b5f;">
  15. </ul>
  16. </body>
  17. <script type="text/javascript">
  18. //树形菜单
  19. var zTreeObj; //定义ztree对象
  20. initTree(); //初始化ztree
  21. var setting = {
  22. check: {
  23. enable: true,
  24. chkStyle: "checkbox",
  25. chkboxType: {
  26. "Y": "s",
  27. "N": "s"
  28. }
  29. },
  30. view: {
  31. selectedMulti: true,
  32. showLine: false
  33. },
  34. data: {
  35. key: {
  36. name: "name"
  37. },
  38. simpleData: {
  39. enable: true,
  40. pIdKey: "pId",
  41. }
  42. },
  43. };
  44. //请求数据
  45. function initTree() {
  46. $.get("test.json", function(data) {
  47. console.log(JSON.stringify(data));
  48. zTreeObj = $.fn.zTree.init($("#zTree"), setting, data);
  49. zTreeObj.expandAll(true);
  50. });
  51. }
  52. </script>
  53. </html>

test.json数据
自己动手,写一些模拟的json数据吧。

  1. [
  2. {
  3. "id": 1,
  4. "pId": null,
  5. "name": "特物联",
  6. "iconSkin": null,
  7. "checked": null,
  8. "isParent": true,
  9. "token": null
  10. },
  11. {
  12. "id": 2,
  13. "pId": 1,
  14. "name": "管理部",
  15. "iconSkin": null,
  16. "checked": null,
  17. "isParent": false,
  18. "token": null
  19. },
  20. {
  21. "id": 157,
  22. "pId": 2,
  23. "name": "我问问",
  24. "iconSkin": null,
  25. "checked": null,
  26. "isParent": false,
  27. "token": null
  28. },
  29. {
  30. "id": 158,
  31. "pId": 157,
  32. "name": "呜呜呜",
  33. "iconSkin": null,
  34. "checked": null,
  35. "isParent": false,
  36. "token": null
  37. },
  38. {
  39. "id": 160,
  40. "pId": 158,
  41. "name": "热热",
  42. "iconSkin": null,
  43. "checked": null,
  44. "isParent": false,
  45. "token": null
  46. },
  47. {
  48. "id": 159,
  49. "pId": 2,
  50. "name": "热热",
  51. "iconSkin": null,
  52. "checked": null,
  53. "isParent": false,
  54. "token": null
  55. },
  56. {
  57. "id": 134,
  58. "pId": 1,
  59. "name": "研发部",
  60. "iconSkin": null,
  61. "checked": null,
  62. "isParent": false,
  63. "token": null
  64. },
  65. {
  66. "id": 140,
  67. "pId": 1,
  68. "name": "安环部",
  69. "iconSkin": null,
  70. "checked": null,
  71. "isParent": false,
  72. "token": null
  73. },
  74. {
  75. "id": 143,
  76. "pId": 1,
  77. "name": "会议部",
  78. "iconSkin": null,
  79. "checked": null,
  80. "isParent": false,
  81. "token": null
  82. },
  83. {
  84. "id": 152,
  85. "pId": 1,
  86. "name": "生产部",
  87. "iconSkin": null,
  88. "checked": null,
  89. "isParent": false,
  90. "token": null
  91. }
  92. ]

22983acb340a2865c739b29d95b6588a.png

另外:
往期合集
一些demo
jQuery的ztree仿windows文件新建和拖拽效果https://www.jianshu.com/p/bfa67325719c

ztree实现编辑和删除功能https://www.jianshu.com/p/95d1df89665f

ztree实现根节点单击事件,显示节点信息https://www.jianshu.com/p/1e0ca6d8afad

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读