function searchTree(){
console.log($("#searchId").val());
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
//参数1:name要查找的在ztree上的字段名称 参数2:动态获取的查找的内容 参数3:在指定的父节点下查找
var nodes = treeObj.getNodesByParamFuzzy("name", $("#searchId").val(), null);
//console.log(nodes);
treeObj.setting.view.expandSpeed = "";//折叠动画是异步的,防止页面加载时机问题,在关闭所有节点时先关闭动画,
treeObj.expandAll(false);
treeObj.setting.view.expandSpeed = "fast";//打开折叠动画效果
for(var i=0; i<nodes.length; i++){
treeObj.expandNode(nodes[i], true, true, true);
treeObj.selectNode(nodes[i]);
}
var nodes1 = treeObj.getCheckedNodes(true);
console.log(nodes1);
}
每次搜索关闭上次打开的所有节点,使用 treeObj.expandAll(false);,此方法是ztree的动画渲染,异步执行,在第二次模糊查询打开节点时,有可能上一次的动画渲染还没有结束,导致页面显示异常,都已经关闭了,还显示的减号打开状态。
解决方案:在关闭所有节点时先关闭动画效果,关闭节点后,在 打开动画效果
treeObj.setting.view.expandSpeed = "";//折叠动画是异步的,防止页面加载时机问题,在关闭所有节点时先关闭动画,
treeObj.expandAll(false);
treeObj.setting.view.expandSpeed = "fast";//打开折叠动画效果
打开模糊查询到的节点数据
//参数1:name要查找的在ztree上的字段名称 参数2:动态获取的查找的内容 参数3:在指定的父节点下查找
var nodes = treeObj.getNodesByParamFuzzy("name", $("#searchId").val(), null);
for(var i=0; i<nodes.length; i++){
//打开指定节点
treeObj.expandNode(nodes[i], true, true, true);
//配合使用打开相关联的父节点
treeObj.selectNode(nodes[i]);
}
禁用某个节点的选中状态,选中节点会不生效,不出现勾选状态
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
for (var i=0, l=nodes.length; i < l; i++) {
treeObj.setChkDisabled(nodes[i], true);
}