实例详解ztree在vue项目中使用并且带有搜索功能


Posted in Javascript onAugust 24, 2018

zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。

上篇文章给大家介绍了vue中如何使用ztree,大家可以点击查看。

之前博客介绍过怎么在vue里展示以及获取点击元素的内容,此文章之介绍搜索功能

html

<el-form-item label="机构" class="ztree-par">
<i class="icon_org"></i>
<input type="text" placeholder="请输入机构" id="ser" v-model="ruleForm.mechanism" @keyup.enter="search_ztree('treeDemo', 'ser')" @click.stop = "control()" class="login-input">
<el-button icon="el-icon-arrow-down" @click.stop="control()"></el-button>
<div class="ztree-z" v-show="ztreeCon">
<ul id="treeDemo" class="ztree"></ul>
</div>
</el-form-item>

main.js需要单独引入

import "./../static/ztree/js/jquery.ztree.exhide-3.5.min.js";

如果不单独引入这个会获取不到很多元素,在input回车事件或者点击事件的时候直接执行此事件即可

代码部分

expand_ztree(treeId) {
  var treeObj = $.fn.zTree.getZTreeObj(treeId);
  treeObj.expandAll(true);
 },
close_ztree(treeId) {
  var treeObj = $.fn.zTree.getZTreeObj(treeId);
  var nodes = treeObj.transformToArray(treeObj.getNodes());
  var nodeLength = nodes.length;
  for (var i = 0; i < nodeLength; i++) {
  if (nodes[i].id == '0') {
   //根节点:展开
   treeObj.expandNode(nodes[i], true, true, false);
  } else {
   //非根节点:收起
   treeObj.expandNode(nodes[i], false, true, false);
  }
  }
 },
search_ztree(treeId, searchConditionId) {
  this.searchByFlag_ztree(treeId, searchConditionId, "");
 },
searchByFlag_ztree(treeId, searchConditionId, flag) {
  //<1>.搜索条件
  var searchCondition = $('#' + searchConditionId).val();
  //<2>.得到模糊匹配搜索条件的节点数组集合
  var highlightNodes = new Array();
  if (searchCondition != "") {
  var treeObj = $.fn.zTree.getZTreeObj(treeId);
  highlightNodes = treeObj.getNodesByParamFuzzy("name", searchCondition, null);
  }
  //<3>.高亮显示并展示【指定节点s】
  this.highlightAndExpand_ztree(treeId, highlightNodes, searchCondition, flag);
 },
highlightAndExpand_ztree(treeId, highlightNodes, tx, flag) {
  var treeObj = $.fn.zTree.getZTreeObj(treeId);
  //<1>. 先把全部节点更新为普通样式
  var treeNodes = treeObj.transformToArray(treeObj.getNodes());
  for (var i = 0; i < treeNodes.length; i++) {
  treeNodes[i].highlight = false;
  treeObj.updateNode(treeNodes[i]);
  }
  //<2>.收起树, 只展开根节点下的一级节点
  this.close_ztree(treeId);
  //<3>.把指定节点的样式更新为高亮显示,并展开
  if (highlightNodes != null) {
  for (var i = 0; i < highlightNodes.length; i++) {
   if (flag != null && flag != "") {
   if (highlightNodes[i].flag == flag) {
    //高亮显示节点,并展开
    highlightNodes[i].highlight = true;
    treeObj.updateNode(highlightNodes[i]);
    //高亮显示节点的父节点的父节点....直到根节点,并展示
    var parentNode = highlightNodes[i].getParentNode();
    var parentNodes = this.getParentNodes_ztree(treeId, parentNode);
    treeObj.expandNode(parentNodes, true, false, true);
    treeObj.expandNode(parentNode, true, false, true);
   }
   } else {
    treeObj.updateNode(highlightNodes[i]);
   var parentNode = highlightNodes[i].getParentNode();
   var parentNodes = this.getParentNodes_ztree(treeId, parentNode);
   treeObj.expandNode(parentNodes, true, false, true);
   treeObj.expandNode(parentNode, true, false, true);
   }
  }
  }
 },
getParentNodes_ztree(treeId, node) {
  if (node != null) {
  var treeObj = $.fn.zTree.getZTreeObj(treeId);
  var parentNode = node.getParentNode();
  return this.getParentNodes_ztree(treeId, parentNode);
  } else {
  return node;
  }
 }

展示

实例详解ztree在vue项目中使用并且带有搜索功能

这个有个小小的bug,就是做键盘按下或者抬起的时候会有问题,https://yq.aliyun.com/articles/308489,这个文章就解决了这个问题

实例详解ztree在vue项目中使用并且带有搜索功能

总结

以上所述是小编给大家介绍的ztree在vue项目中使用并且带有搜索功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
jQuery中click事件用法实例
Dec 26 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 Javascript
JavaScript轮播图简单制作方法
Feb 20 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 Javascript
基于ajax实现上传图片代码示例解析
Dec 03 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
Aug 24 #Javascript
element-ui 表格数据时间格式化的方法
Aug 24 #Javascript
vue select选择框数据变化监听方法
Aug 24 #Javascript
vue左侧菜单,树形图递归实现代码
Aug 24 #Javascript
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 #jQuery
element-ui中的select下拉列表设置默认值方法
Aug 24 #Javascript
vue 登录滑动验证实现代码
Aug 24 #Javascript
You might like
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
python利用线程实现多任务
2020/09/18 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
世界经理人咨询有限公司面试
2014/09/23 面试题
大学毕业的自我鉴定
2013/10/08 职场文书
单身联谊活动方案
2014/01/29 职场文书
信息工作经验交流材料
2014/05/28 职场文书
检讨书格式
2019/04/25 职场文书