解决ztree搜索中多级菜单展示不全问题

ztree 官网的中的 Search Nodes 例子中,所有菜单都是连着的,如果出现某个菜单下无子节点,那么在搜索时,此节点便不会自动展开,这里给出对应的增强版代码

var setting = {
    data: {
      key: {
        title: "t"
      },
      simpleData: {
        enable: true
      }
    },
    view: {
      fontCss: getFontCss
    }
  };
  var zNodes =[
    { id:1, pId:0, name:"系统参数",open:true},
    { id:11, pId:1, name:"通用参数"},
    { id:111, pId:11, name:"状态A"},
    { id:112, pId:11, name:"状态B"},
    { id:12, pId:1, name:"日志"},
    { id:121, pId:12, name:"操作类型"},
    { id:122, pId:12, name:"操作结果"},
    { id:1221, pId:122, name:"操作结果1"},
    { id:1222, pId:122, name:"操作结果2"},
    { id:12221, pId:1222, name:"操作结果21"},
    { id:12222, pId:1222, name:"操作结果22"},
    { id:12223, pId:1222, name:"操作结果23"},
    { id:2, pId:0, name:"业务参数",open:true},
    { id:21, pId:2, name:"工单类型"},
    { id:22, pId:2, name:"监控类型"},
    { id:23, pId:22, name:"监控子类型1"},
    { id:24, pId:22, name:"监控子类型2"},
    { id:25, pId:24, name:"监控子子类型1"},
    { id:26, pId:24, name:"监控子子类型2"},
  ];
  var lastValue = '', nodeList = [], fontCss = {};
  function searchNode(e) {
    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
    var value = $.trim(key.val());
    lastValue = value;
    //zTree.expandAll(true);
    $('#treeDemo').html("");
    $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    if (value != "") {
      nodeList = zTree.getNodesByParamFuzzy("name", value);
    } else {
      nodeList = zTree.getNodesByParamFuzzy("name", "|||||||||||||||");
    }
    updateNodes(true);
  }
  var parentNode = [];
  function updateNodes(highlight) {
    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
    parentNode = [];
    for( var i=0, l=nodeList.length; i<l; i++) {
      nodeList[i].highlight = highlight;
      zTree.updateNode(nodeList[i]);
      if (!nodeList[i].isParent && !parentNode.contains(nodeList[i].getParentNode().pId)) {
        zTree.expandNode(nodeList[i].getParentNode(), true, true, true);
        parentNode.push(nodeList[i].getParentNode().pId);
        console.log(nodeList[i].getParentNode().pId);
      } else {
        zTree.expandNode(nodeList[i], true, true, true);
      }
    }
    console.log(parentNode);
  }
  Array.prototype.contains = function (obj) {
    var i = this.length;
    while (i--) {
      if (this[i] === obj) {
        return true;
      }
    }
    return false;
  }
  function getFontCss(treeId, treeNode) {
    return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
  }
  var key;
  $(document).ready(function(){
    $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    key = $("#search_name");
    key.bind("blur", searchNode);
  });

效果图

以上所述是小编给大家介绍的ztree搜索中多级菜单展示不全的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • jQuery使用zTree插件实现树形菜单和异步加载

    本文实例讲解了jQuery使用zTree插件实现树形菜单和异步加载,并且可以进行编辑,分享给大家供大家参考,具体内容如下 效果图: 一.HTML代码 <html> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <l

  • jQuery ztree实现动态树形多选菜单

    我用到的版本ztree core v3.5.24,需要引入的js,css,jquery.js,jquery.ztree.core.js,jquery.ztree.excheck.js(多选框可选),zTreeStyle.css. 需要注意的指向父节点的pId,我开始写的是pid一开始没注意,默认的是pId,当然可以pIdKey指定自定义的(未测).还有如果图片没显示肯定是没引入img图片,记得写好路径. 1.先介绍初始化加载ztree jsp <div > <ul id="tr

  • AngularJS实现树形结构(ztree)菜单示例代码

    树形结构 树形结构有多种形式和实现方式,zTree可以说得上是一种比较简洁又美观的且实现起来也相对简单.zTree是一个依靠jQuery实现的多功能"树插件".它最大的优点是配置灵活,只要id与pid的值相同就可形成一个简单的父子结构.再加上免费开源,使用zTree的人越来越多. 效果图如下 首先你需要知道AngularJS的双向数据绑定是什么才可以更好的理解下面的代码,想了很久才想出用下面的代码来实现左侧菜单树形结构 要实现上面的功能你需要操作如下步骤: 在HTML标签内添加ng-a

  • zTree插件之多选下拉菜单实例代码

    zTree插件之多选下拉菜单实例代码css和js 复制代码 代码如下: <!--ztree树结构--><link rel="stylesheet" type="text/css" href="assets/ztree/css/zTreeStyle.css"><link rel="stylesheet" type="text/css" href="assets/ztre

  • zTree插件之单选下拉菜单实例代码

    复制代码 代码如下: <!--ztree树结构--><link rel="stylesheet" type="text/css" href="assets/ztree/css/zTreeStyle.css"><link rel="stylesheet" type="text/css" href="assets/ztree/css/zTreeIcons.css"

  • jQuery zTree加载树形菜单功能

    由于项目中需要设计树形菜单功能,于是百度找相关资料,发现zTree方面的资料不少,觉得挺不错,而且zTree官方也有API文档,介绍的非常详细,经过一番捣腾之后,终于给弄出来了,所以便记下来,也算是学习zTree的一个总结吧. zTree的介绍: 1.zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件 2.zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 3.采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本

  • 解决ztree搜索中多级菜单展示不全问题

    ztree 官网的中的 Search Nodes 例子中,所有菜单都是连着的,如果出现某个菜单下无子节点,那么在搜索时,此节点便不会自动展开,这里给出对应的增强版代码 var setting = { data: { key: { title: "t" }, simpleData: { enable: true } }, view: { fontCss: getFontCss } }; var zNodes =[ { id:1, pId:0, name:"系统参数",

  • JS实现多级菜单中当前菜单不随页面跳转样式而发生变化

    一.概述 本文介绍了JQuery巧妙实现多级菜单中当前菜单不随页面跳转样式发生变化,貌似没看懂啥意思? 看图说话:就是点二级或多级菜单时,父级展开,当前菜单是被选中状态,这下明白了吧? 二.应用场景 当一个项目使用公共模板文件时(如上图的左侧菜单栏),我们给每个子菜单添加链接时,点击页面跳转样后还是公共模板的样式,这时就需要实现动态加载当前菜单的样式. 三.实现方法 第一种:.通过php传递变量,模板页面通过接收这些变量来实现当前页面的菜单选中与否,父级展开等这些样式 缺点:虽然实现简单,但是每

  • Android 中 SwipeLayout一个展示条目底层菜单的侧滑控件源码解析

    由于项目上的需要侧滑条目展示收藏按钮,记得之前代码家有写过一个厉害的开源控件 AndroidSwipeLayout 本来准备直接拿来使用,但是看过 issue 发现现在有不少使用者反应有不少的 bug ,而且代码家现在貌似也不进行维护了.故自己实现了一个所要效果的一个控件.因为只是实现我需要的效果,所以大家也能看到,代码里有不少地方我是写死的.希望对大家有些帮助.而且暂时也不需要 AndroidSwipeLayout 大而全的功能,算是变相给自己做的项目精简代码了. 完整示例代码请看:GitHu

  • 关于python pycharm中输出的内容不全的解决办法

    很多时候我们会发现有的时候输出的结果特别多的时候,会在最后输出时用...代替,最后输出一个总长度,那要咋么弄咧? import pandas as pd # 设置显示的最大列.宽等参数,消掉打印不完全中间的省略号 # pd.set_option('display.max_columns', 1000) pd.set_option('display.width', 1000)#加了这一行那表格的一行就不会分段出现了 # pd.set_option('display.max_colwidth', 1

  • 解决ant-design-vue中menu菜单无法默认展开的问题

    在ant-design-vue的文档中, menu有两个可以传的参数,分别为defaultOpenKeys和openKeys,但在接手做一个项目时,openKeys这个参数前人已经写了,可能是从文档中直接复制demo没有删除掉,我也没去管. 等到需要用到这个defaultOpenKeys的时候,想做每次刷新还会再次打开上次打开的菜单的效果,但一直无效,网上也没有查到有类似的情况,后面只能自己去看源码,查了一下,发现这个代码片段 这段代码不就说明了有openKeys就不会有defaultOpenK

  • jdk1.8+vue elementui实现多级菜单功能

    前言:在学习谷粒商城的时候,在做分类维护树形菜单维护的功能中,项目中只讲了菜单三级树怎么实现,想拓展一下多级菜单,功能已实现,记录一下,有不对的地方欢迎指正. 一.后端部分 使用Jdk1.8的新特性Stream和lamada表达式,数据库的框架使用苞米豆的mybatis plus,话不多说,上代码 1. 新建ManyTree类,可封装成工具类 import com.atguigu.gulimall.product.entity.CategoryEntity; import com.google.

  • 基于jquery实现多级菜单效果

    本文实例为大家分享了jquery实现多级菜单效果展示的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0; padding:0; font-size:14px; } ul,li{ list

  • 基于JavaScript实现多级菜单效果

    本文实例为大家分享了js实现多级菜单效果展示的具体代码,供大家参考,具体内容如下 具体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0; padding:0; font-size:14px; } ul,li{

  • Winform界面中实现菜单列表的动态个性化配置管理方法

    在我们一般的应用系统里面,由于系统是面向不同类型的用户,我们所看到的菜单会越来越多,多一点的甚至上百个,但是我们实际工作接触的菜单可能就是那么几个,那么对于这种庞大的菜单体系,寻找起来非常不便.因此对菜单的个性化配置就显得尤为重要,本篇随笔就是基于这样的理念,提供用户对可见菜单进行一个动态配置,只选自己喜欢.常用的菜单显示出来即可,菜单的配置存储在数据库里面,在不同的客户端体验都是一样.本篇随笔主要介绍实现这样的功能的一个完整思路,部分代码逻辑可供参考. 1. 菜单列表的动态个性化配置的过程 在

  • vue实现多级菜单效果

    本次记录基于iview3框架实现多级菜单+vue router实现页面切换 方法一: 使用Tree 树形控件,官方文档 以官方demo为例,数据中添加URL属性,用于路由跳转,正式项目中该tree控件的数据由后端给出,需要注意的是后端给出的URL跳转地址最前一定要看清有没有"/" ,如果没有自己手动加或后端改,没有这个"/" 斜杠会导致路由跳转失败. 思路:根据官方文档里面写用on-select-change事件返回当前已选中的节点数组.当前项,就利用返回的当前项数

随机推荐