JQuery Ztree 树插件配置与应用小结 1

简介: JQuery Ztree 树插件配置与应用小结

JQuery Ztree 树插件配置与应用小结


 

测试环境

Win7

jquery-3.2.1.min.js

下载地址:

https://gitee.com/ishouke/front_end_plugin/blob/master/jquery-3.2.1.min.js

 

zTree_v3-master.zip

下载地址:

https://github.com/zTree/zTree_v3

 

插件配置与应用

应用效果展示

 

HTML代码片段

 

<!DOCTYPE html>

<html lang="zh-cn">

<head>

   <meta charset="utf-8">

   <meta http-equiv="X-UA-Compatible" content="IE=edge">

   <meta name="viewport" content="width=device-width, initial-scale=1">

 

   <!-- 上述3meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->

   {% load staticfiles %}

 

  ……略

 

   <!-- zTree -->

   <link rel="stylesheet" href="{% static 'website/zTree-3.5/css/demo.css' %}" type="text/css" />

   <link rel="stylesheet" href="{% static 'website/zTree-3.5/css/metroStyle/metroStyle.css' %}" type="text/css" />

   <script type="text/javascript" src="{% static 'website/zTree-3.5/js/jquery.ztree.core.js' %}" defer></script>

   <script type="text/javascript" src="{% static 'website/zTree-3.5/js/jquery.ztree.excheck.js' %}" defer></script>

   <script type="text/javascript" src="{% static 'website/zTree-3.5/js/jquery.ztree.exedit.js' %}" defer></script>

 

 

  ……略

 

<script type="text/javascript" src="{% static 'website/js/resource-setting.js' %}" defer></script>

……略

 

 

</head>

<body>

 

<div class="container-fluid">

   <div class="row">

       <div>

           <button class="btn btn-primary" data-toggle="modal" data-target="#resourceDialog">点击创建一级根目录</button>

       </div>

 

       <div class="zTreeDemoBackground left">

           {#    <ul id="treeDemo" class="ztree" style="height:800px"></ul>#}

           <ul id="ztree" class="ztree"></ul>

       </div>

   </div>

</div>

 

  ……略

 

 

 

</body>

</html>

 

 

JS代码片段

resource-setting.js

 

/**

* ztree 设置

*

*/

var setting = {

   view: {

       addHoverDom: addHoverDom,

       removeHoverDom: removeHoverDom,

       selectedMulti: false

   },

   check: {

       enable: false  

   },

   data: {

       simpleData: { // true / false 分别表示使用 / 不使用简单数据模式如果设置为 true,请务必设置 setting.data.simpleData 内的其他参数: idKey / pIdKey / rootPId,并且让数据满足父子关系。

           enable: true,

           idKey: "id",   // 节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]

           pIdKey: "pId", // 节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]

           rootPId: 0     // 用于修正根节点父节点数据,即 pIdKey 指定的属性值。[setting.data.simpleData.enable = true 时生效]

       }

   },

   edit: {

       enable: true

   },

   callback: {

       beforeRemove: zTreeBeforeRemove,

       beforeEditName: zTreeBeforeEditName,

       beforeDrag:function(){return false;} // 禁止拖拽

   }

};

 

/**

* 用于当鼠标移动到节点上时,显示用户自定义控件,同时给控件(例中为新增按钮)绑定点击事件:打开新增资源树节点信息模态对话框

*/

function addHoverDom(treeId, treeNode) {

   var sObj = $("#" + treeNode.tId + "_span"); // 获取对应节点

 

   if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;

   var addStr = "<span class='button add' id='addBtn_" + treeNode.tId

       + "' title='add node' onfocus='this.blur();'></span>";

   sObj.after(addStr);

 

   var btn = $("#addBtn_"+treeNode.tId); //“新增图标按钮

 

   if (btn) btn.bind("click", function(){ // 新增图标按钮绑定点击事件

       currentZtreeNode = treeNode; // 保存点击的节点,作为新增资源节点的父节点,在提交表单时使用

       opType = 'add';              // 设置操作类型为新增

       $('#'+ resourceDialogID).modal('show'); // 打开对话框

       return false;

   });

};

 

 

/**

* 于当鼠标移出节点时,隐藏用户自定义控件

* @param treeId

* @param treeNode

*/

function removeHoverDom(treeId, treeNode) {

   $("#addBtn_" + treeNode.tId).unbind().remove();

 

};

 

 

 

/**

* 用于捕获节点被删除之前的事件回调函数,并且根据返回值确定是否允许删除操作

* @param treeId

* @param treeNode

* @returns {boolean}

*/

function zTreeBeforeRemove(treeId, treeNode) {

   var index = treeNode.name.indexOf(' [')

   var nodeName = ''

   if (index != -1) {

       nodeName = treeNode.name.substr(0, index);

   } else {

       nodeName = treeNode.name;

   }

 

   var mark = true; // 标记是否删除成功

   if (confirm('是否删除资源"' + nodeName + '"?')) {

       var nodeID = treeNode.id;

 

       $.ajax({

           type: "POST",

           url: deleteResourceZtreeNodeURL,

           async: false,

           data: {'nodeID': nodeID},

 

           success: function (result) {

               if (result.success == 'true') {

                   alert(result.msg);

                   mark = true;

               } else {

                   alert(result.msg + "," + result.reason);

                   mark = false;

               }

           },

           error: function(XmlHttpRequest, textStatus, errorThrown) {

               alert('删除资源树节点请求失败' + XmlHttpRequest.responseText);

               mark = false;

           }

       });

       return mark;

   } else {

       return false;

   }

}

 

 

/**

* 用于捕获节点编辑按钮的 click 事件,并且根据返回值确定是否允许进入名称编辑状态,同时打开资源树修改节点信息模态对话框

* @param treeId

* @param treeNode

* @returns {boolean}

*/

function zTreeBeforeEditName(treeId, treeNode) {

   currentZtreeNode = treeNode;  // 记录操作的节点

   opType = 'update';      // 设置操作类型为修改

 

   var nodeID = treeNode.id;

   // 获取节点信息,并填充表单

   $.ajax({

       type: "get",

       url: queryResourceZtreeNodeURL,

       async: false,

       data: {'nodeID': nodeID },

       success: function (result) {

           if (result.success == 'true') {

               //alert(result.msg);

               var resourceFormSelector = '#' +  resourceFormID;

 

               // 序列化表单,获取表单组件 name属性,表单设计 name属性值id属性值是一样的,所以也就获取表单组件id

               var dataArray = $(resourceFormSelector).serializeArray();

 

               $.each(dataArray, function () {

                   $('#' + this.name).val(result.data[this.name]);

               });

 

               $('#' + resourceDialogID).modal('show'); // 打开修改模态对话框

           } else {

               // 重置变量

               currentZtreeNode = null;

               opType = 'add';

               alert(result.msg + "," + result.reason);

           }

       },

       error: function(XmlHttpRequest, textStatus, errorThrown) {

           // 重置变量

           opType = 'add';

           currentZtreeNode = null;

           alert('查询资源树节点信息请求失败' + XmlHttpRequest.responseText);

       }

   });

 

   return false; // 不进入编辑状态

 

}

 

getResourcesTreeNodes().then(function(result) {

   if (result.success == 'true') {

       $.fn.zTree.init($('#' + resouceZtreeID), setting,  result.data);

   } else {

       alert(result.msg + "," + result.reason);

   }

});

 

代码分析

setting.view.addHoverDom

用于当鼠标移动到节点上时,显示用户自定义控件,显示隐藏状态同 zTree 内部的编辑、删除按钮

请务必与 setting.view.removeHoverDom 同时使用;属于高级应用,使用时请确保对 zTree 比较了解。

默认值:null

 

参数说明

treeIdString  对应 zTree 的 treeId,便于用户操控

 

treeNodeJSON   需要显示自定义控件的节点 JSON 数据对象

 

setting.view.removeHoverDom

用于当鼠标移出节点时,隐藏用户自定义控件,显示隐藏状态同 zTree 内部的编辑、删除按钮

请务必与 addHoverDom 同时使用;属于高级应用,使用时请确保对 zTree 比较了解。

默认值:null

 

参数说明

treeIdString  对应 zTree 的 treeId,便于用户操控

treeNodeJSON  需要隐藏自定义控件的节点 JSON 数据对象

 

setting.check.enable

设置 zTree 的节点上是否显示 checkbox / radio

默认值: false

参数值:true / false  分别表示 显示 / 不显示 复选框或单选框

 

setting 举例:需要显示 checkbox

var setting = {

   check: {

       enable: true

   }

};

......

 

setting.check.chkStyle

勾选框类型(checkbox 或 radio)[setting.check.enable = true 时生效]

默认值:"checkbox"

 

参数值: 值为 "checkbox" 时,显示 checkbox 选择框,setting.check.chkboxType 属性有效。 值为 "radio" 时,显示 radio 选择框, setting.check.radioType 属性有效。

请注意大小写,不要改变

 


目录
相关文章
|
1月前
jQuery+Slick插件实现游戏人物轮播展示切换源码
jQuery+Slick插件实现游戏人物轮播展示切换源码
40 14
|
2月前
|
JavaScript
jquery文字动画特效插件animatext
jquery文字动画特效插件animatext
63 9
|
2月前
|
移动开发 JavaScript 前端开发
简单易用的jquery响应式轮播图插件ma5slider
ma5slider是一款简单易用的jquery响应式轮播图插件。该轮播图支持鼠标拖拽,可以通过CSS定制外观,支持无限循环模式,内置水平,垂直和淡入淡出三种轮播图过渡动画效果。
|
2月前
|
JavaScript 容器
jquery和CSS3图片排序过滤搜索插件
Filterizr是一款jquery和CSS3图片排序过滤插件。它可以对一组图片进行排序,按条件过滤和按关键字搜索。并在显示结果时使用指定的CSS3动画过渡效果。
34 2
|
2月前
|
JavaScript
jquery和CSS3响应式轮播图插件jcSlider
jcSlider是一款jquery和CSS3响应式轮播图插件。jcSlider使用CSS3过渡动画,它可以和animate.css完美结合,生成60多种轮播图过渡动画效果。
|
2月前
|
JavaScript 前端开发
jQuery和CSS3滑动展开菜单按钮插件
这是一款jQuery和CSS3滑动展开菜单按钮插件。该滑动展开菜单按钮在用户点击主菜单按钮之后,子菜单以滑动的方式依次展开
72 21
|
2月前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
75 16
|
2月前
|
JavaScript
简洁实用的jQuery进度条插件
这是一款简洁实用的jQuery进度条插件。该插件使用简单,通过在页面中放置指定的HTML代码,即可生成带动画效果的进度条。
|
2月前
|
JavaScript 容器
jQuery文字跑马灯插件Marquee
jQuery.Marquee是一款jQuery文字跑马灯插件。jQuery.Marquee跑马灯插件可以结合使用CSS3动画,制作文字的上下左右移动效果。
|
2月前
|
JavaScript
jQuery Lightbox和弹出层插件flashy
Flashy.js是一款响应式jQuery Lightbox和弹出层插件