实例详解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 相关文章推荐
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
node.js中的http.response.end方法使用说明
Dec 14 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
Dec 21 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
JQuery 选择器、DOM节点操作练习实例
Sep 28 jQuery
在 vue-cli v3.0 中使用 SCSS/SASS的方法
Jun 14 Javascript
微信小程序与webview交互实现支付功能
Jun 07 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 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
php+ajax实时刷新简单实例
2015/02/25 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
php字符集转换
2017/01/23 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
python定时器(Timer)用法简单实例
2015/06/04 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python pass详细介绍及实例代码
2016/11/24 Python
python生成式的send()方法(详解)
2017/05/08 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
python数据处理实战(必看篇)
2017/06/11 Python
Python实现完整的事务操作示例
2017/06/20 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
python 日志 logging模块详细解析
2020/03/31 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
三维科技面试题
2013/07/27 面试题
房地产销售计划书
2014/01/10 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
化工专业自荐书
2014/06/16 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记