zTree模糊搜索方法

  • A+
所属分类:前端
  1. /**
  2.  * zTree模糊搜索
  3.  * @param treeId zTree的id
  4.  * @param keyword 搜索的关键词
  5.  * @param notExpandFirstLevel 删除关键词时是否默认展开树的第一层
  6.  */
  7. function searchTree(treeId, keyword, notExpandFirstLevel) {
  8.     var tree = $.fn.zTree.getZTreeObj(treeId);
  9.     var allTreeNodes = tree.transformToArray(tree.getNodes());
  10.     tree.hideNodes(allTreeNodes);
  11.     var showNodes = tree.getNodesByParamFuzzy("name", $.trim(keyword), null);
  12.     var parentNodes = [];
  13.     var getParentNodes = function(curNode) {
  14.         var pNodes = [];
  15.         if (curNode.getParentNode()) {
  16.             pNodes.push(curNode.getParentNode());
  17.             return pNodes.concat(getParentNodes(curNode.getParentNode()));
  18.         } else {
  19.             return pNodes;
  20.         }
  21.     }
  22.     for (var i = 0; i < showNodes.length; i++) {
  23.         parentNodes = parentNodes.concat(getParentNodes(showNodes[i]));
  24.     }
  25.     showNodes = showNodes.concat(parentNodes);
  26.     tree.showNodes(showNodes);
  27.     // 搜索到的匹配的节点可能不是根节点,所以搜索结果展开,因为用户可能非常多,所以显示全部结果时仅展开第一层
  28.     if (!!$.trim(keyword)) {
  29.         // 由于zTree收起展开使用了jQuery的动画,但没有考虑到异步的问题,没有提供回调,所以会出现问题
  30.         // 解决方案:先关闭动画,收缩完成后再恢复
  31.         tree.setting.view.expandSpeed = "";
  32.         tree.expandAll(true);
  33.         tree.setting.view.expandSpeed = "fast";
  34.     } else {
  35.         if (!notExpandFirstLevel) {
  36.             var rootNodes = tree.getNodes();
  37.             $.each(allTreeNodes, function(index) {
  38.                 tree.expandNode(allTreeNodes[index], rootNodes.indexOf(allTreeNodes[index]) > -1);
  39.             });
  40.         } else {
  41.             // 由于zTree收起展开使用了jQuery的动画,但没有考虑到异步的问题,没有提供回调,所以会出现问题
  42.             // 解决方案:先关闭动画,收缩完成后再恢复
  43.             tree.setting.view.expandSpeed = "";
  44.             tree.expandAll(false);
  45.             tree.setting.view.expandSpeed = "fast";
  46.         }
  47.     }
  48. }
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: