实例详解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 面向对象之重载
May 04 Javascript
jquery特效 幻灯片效果示例代码
Jul 16 Javascript
JS控制阿拉伯数字转为中文大写示例代码
Sep 04 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
Sep 12 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
javaScript数组迭代方法详解
Apr 14 Javascript
基于canvas的二维码邀请函生成插件
Feb 14 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
基于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
德生H-501的评价与改造
2021/03/02 无线电
用PHP实现递归循环每一个目录
2010/08/08 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
js停止输出代码
2008/07/20 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
python使用分治法实现求解最大值的方法
2015/05/12 Python
python3抓取中文网页的方法
2015/07/28 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python 打印中文字符的三种方法
2018/08/14 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
秋季运动会活动方案
2014/02/05 职场文书
同意离婚答辩状
2015/05/22 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL