zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。
上篇文章给大家介绍了,大家可以点击查看。
之前博客介绍过怎么在vue里展示以及获取点击元素的内容,此文章之介绍搜索功能
html
main.js需要单独引入
如果不单独引入这个会获取不到很多元素,在input回车事件或者点击事件的时候直接执行此事件即可
代码部分
.搜索条件
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,flag);
},highlightAndExpand_ztree(treeId,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);
treeObj.expandNode(parentNode,true);
}
} else {
treeObj.updateNode(highlightNodes[i]);
var parentNode = highlightNodes[i].getParentNode();
var parentNodes = this.getParentNodes_ztree(treeId,parentNode);
treeObj.expandNode(parentNodes,true);
treeObj.expandNode(parentNode,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;
}
}
展示
这个有个小小的bug,就是做键盘按下或者抬起的时候会有问题,,这个文章就解决了这个问题
总结
以上所述是小编给大家介绍的ztree在vue项目中使用并且带有搜索功能。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。
原文链接:https://www.f2er.com/vue/30766.html