实例详解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 相关文章推荐
javascript call和apply方法
Nov 24 Javascript
关于Jquery操作Cookie取值错误的解决方法
Aug 26 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
Lua表达式和控制结构学习笔记
Dec 15 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
Nov 25 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
Angular4 反向代理Details实践
May 30 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
Vue的编码技巧与规范使用详解
Aug 28 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
Sep 04 Javascript
jQuery实现增删改查
Dec 22 jQuery
基于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
ADODB的数据库封包程序库
2006/12/31 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
新闻内页-JS分页
2006/06/07 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
javascript 闭包详解
2015/07/02 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
python 基础教程之Map使用方法
2017/01/17 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python元组知识点总结
2019/02/18 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python离线安装外部依赖包的实现
2020/02/13 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
实习自荐信
2013/10/13 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2015教师年度考核评语
2015/03/25 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL