ztree展开到指定的层级,且支持正则表达式匹配方式不展开指定的某些节点
前言
之前在下面这篇文章中通过递归实现展开到任意层级的方法,
后来又遇到可不可以不展开某些节点,所以对上篇文章进行了部分修改,以支持在展开层级节点的同时又不展开某些节点。
一些题外话:①之前没想到这篇随手写的ztree笔记被很多人转载以及转载的时候再此基础上改动,但是还是希望大家转载时能够注明原作者和文章地址,感谢支持eguid原创技术分享与实践。
实现方式
在原有递归的基础上加上一个正则表达式匹配即可
代码实现
/**
展开全部ztree树节点
b-(true表示obj参数传入的是ztree对象;false表示传入的是树节点对象)
childnodes-子节点,
l-要展开到哪个层级,大于等于0即可
obj-ztree对象或者节点对象(支持ztree对象传入和节点对象传入)
excludes-排除某些不需要展开的节点的正则表达式
*/
function showztreemenuNum(b,childnodes,l,obj,excludes) {
if(b){
var rootnodes = childnodes.getNodes();
showztreemenuNum(false,rootnodes,l,childnodes,excludes);
}else{
var len=-1;
if(!isNull(childnodes)&&!isNull((len=childnodes.length))&&len>0){
if(l<=childnodes[0].level){
return;
}
for (var i = 0; i < len; i++) {
if(excludes!=null){
if(excludes.test(childnodes[i].name)){
continue;
}
}
obj.expandNode(childnodes[i], true, false, false, true);
var child=childnodes[i].children;
showztreemenuNum(false,child,l,obj,excludes);
}
}
}
}
如何使用
ztreeObj是ztree对象(zTreeObj=$.fn.zTree.init(dom, config);)
showztreemenuNum(true,zTreeObj,1,null,/东北+|西北+|东南/);