返回顶部
首页 > 资讯 > 前端开发 > node.js >jQuery EasyUI tree增加搜索功能的示例分析
  • 740
分享到

jQuery EasyUI tree增加搜索功能的示例分析

2024-04-02 19:04:59 740人浏览 安东尼
摘要

这篇文章给大家分享的是有关Jquery EasyUI tree增加搜索功能的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。扩展jQuery EasyUI tree搜索树节

这篇文章给大家分享的是有关Jquery EasyUI tree增加搜索功能的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

扩展jQuery EasyUI tree搜索树节点的方法,使其支持节点名称的模糊匹配,将不匹配的节点隐藏。


(function($) { 
  $.extend($.fn.tree.methods, {
    
    search: function(jQtree, searchText) {
      //easyui tree的tree对象。可以通过tree.methodName(jqTree)方式调用easyui tree的方法
      var tree = this;
      //获取所有的树节点
      var nodeList = getAllNodes(jqTree, tree);
      //如果没有搜索条件,则展示所有树节点
      searchText = $.trim(searchText);
      if (searchText == "") {
        for (var i=0; i<nodeList.length; i++) {
          $(".tree-node-targeted", nodeList[i].target).removeClass("tree-node-targeted");
          $(nodeList[i].target).show();
        }
        //展开已选择的节点(如果之前选择了)
        var selectedNode = tree.getSelected(jqTree);
        if (selectedNode) {
          tree.expandTo(jqTree, selectedNode.target);
        }
        return;
      }
      //搜索匹配的节点并高亮显示
      var matchedNodeList = [];
      if (nodeList && nodeList.length>0) {
        var node = null;
        for (var i=0; i<nodeList.length; i++) {
          node = nodeList[i];
          if (isMatch(searchText, node.text)) {
            matchedNodeList.push(node);
          }
        }
        //隐藏所有节点
        for (var i=0; i<nodeList.length; i++) {
          $(".tree-node-targeted", nodeList[i].target).removeClass("tree-node-targeted");
          $(nodeList[i].target).hide();
        }      
        //折叠所有节点
        tree.collapseAll(jqTree);
        //展示所有匹配的节点以及父节点      
        for (var i=0; i<matchedNodeList.length; i++) {
          showMatchedNode(jqTree, tree, matchedNodeList[i]);
        }
      }  
    },
    
    showChildren: function(jqTree, node) {
      //easyui tree的tree对象。可以通过tree.methodName(jqTree)方式调用easyui tree的方法
      var tree = this;
      //展示子节点
      if (!tree.isLeaf(jqTree, node.target)) {
        var children = tree.getChildren(jqTree, node.target);
        if (children && children.length>0) {
          for (var i=0; i<children.length; i++) {
            if ($(children[i].target).is(":hidden")) {
              $(children[i].target).show();
            }
          }
        }
      }  
    },
    
    scrollTo: function(jqTree, param) {
      //easyui tree的tree对象。可以通过tree.methodName(jqTree)方式调用easyui tree的方法
      var tree = this;
      //如果node为空,则获取当前选中的node
      var targetNode = param && param.targetNode ? param.targetNode : tree.getSelected(jqTree);
      if (targetNode != null) {
        //判断节点是否在可视区域        
        var root = tree.getRoot(jqTree);
        var $targetNode = $(targetNode.target);
        var container = param && param.treeContainer ? param.treeContainer : jqTree.parent();
        var containerH = container.height();
        var nodeOffsetHeight = $targetNode.offset().top - container.offset().top;
        if (nodeOffsetHeight > (containerH - 30)) {
          var scrollHeight = container.scrollTop() + nodeOffsetHeight - containerH + 30;
          container.scrollTop(scrollHeight);
        }              
      }
    }
  });
  
  function showMatchedNode(jqTree, tree, node) {
    //展示所有父节点
    $(node.target).show();
    $(".tree-title", node.target).addClass("tree-node-targeted");
    var pNode = node;
    while ((pNode = tree.getParent(jqTree, pNode.target))) {
      $(pNode.target).show();      
    }
    //展开到该节点
    tree.expandTo(jqTree, node.target);
    //如果是非叶子节点,需折叠该节点的所有子节点
    if (!tree.isLeaf(jqTree, node.target)) {
      tree.collapse(jqTree, node.target);
    }
  }  
  
  function isMatch(searchText, targetText) {
    return $.trim(targetText)!="" && targetText.indexOf(searchText)!=-1;
  }
  
  function getAllNodes(jqTree, tree) {
    var allNodeList = jqTree.data("allNodeList");
    if (!allNodeList) {
      var roots = tree.getRoots(jqTree);
      allNodeList = getChildNodeList(jqTree, tree, roots);
      jqTree.data("allNodeList", allNodeList);
    }
    return allNodeList;
  }
  
  function getChildNodeList(jqTree, tree, nodes) {
    var childNodeList = [];
    if (nodes && nodes.length>0) {       
      var node = null;
      for (var i=0; i<nodes.length; i++) {
        node = nodes[i];
        childNodeList.push(node);
        if (!tree.isLeaf(jqTree, node.target)) {
          var children = tree.getChildren(jqTree, node.target);
          childNodeList = childNodeList.concat(getChildNodeList(jqTree, tree, children));
        }
      }
    }
    return childNodeList;
  }
})(jQuery);

感谢各位的阅读!关于“jQuery EasyUI tree增加搜索功能的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: jQuery EasyUI tree增加搜索功能的示例分析

本文链接: https://lsjlt.com/news/71564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • jQuery EasyUI tree增加搜索功能的示例分析
    这篇文章给大家分享的是有关jQuery EasyUI tree增加搜索功能的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。扩展jQuery EasyUI tree搜索树节...
    99+
    2024-04-02
  • Jquery EasyUI tree异步加载的示例分析
    这篇文章主要介绍了Jquery EasyUI tree异步加载的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体代码如下:priv...
    99+
    2024-04-02
  • jQuery EasyUI组件加上“清除”功能的示例分析
    这篇文章主要介绍jQuery EasyUI组件加上“清除”功能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、背景    在使用 EasyU...
    99+
    2024-04-02
  • jquery+easyui+DataGrid的示例分析
    小编给大家分享一下jquery+easyui+DataGrid的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、简单示例HTML<table id="t...
    99+
    2024-04-02
  • Jquery中EasyUI $.Parser的示例分析
    这篇文章主要介绍了Jquery中EasyUI $.Parser的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Parser(解析器)...
    99+
    2024-04-02
  • SQL Server全文搜索功能的示例分析
    这篇文章主要为大家展示了“SQL Server全文搜索功能的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL Server全文搜索功能的示例分析”这...
    99+
    2024-04-02
  • EasyUI中TreeGrid过滤功能的示例分析
    小编给大家分享一下EasyUI中TreeGrid过滤功能的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!写在最前面这个星期一直在纠结easyui的treegrid的过滤功能,原因呢...
    99+
    2024-04-02
  • react echarts tree树图搜索展开功能示例详解
    目录前言最终效果版本信息核心功能:关键思路:附上代码数据data.js功能:TreeUtils总结:前言 umi+antd-admin 框架中使用类组件+antd结合echart...
    99+
    2023-01-13
    react echarts tree树图搜索 react echarts tree
  • Jquery中Easyui验证扩展的示例分析
    这篇文章主要为大家展示了“Jquery中Easyui验证扩展的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Jquery中Easyui验证扩展的示例分析...
    99+
    2024-04-02
  • mysql中正则表达式搜索功能的示例分析
    这篇文章主要介绍mysql中正则表达式搜索功能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:我们知道正则表达式是描述搜索模式的特殊字符串。 它是一个强大的工具,为...
    99+
    2024-04-02
  • 为Xamarin.Forms的导航栏增加搜索功能
    在使用NavigationPage导航的时候, 我们可以给里面添加一些功能按钮, 如下所示: <ContentPage.ToolbarItems> ...
    99+
    2024-04-02
  • jQuery EasyUI ProgressBar进度条组件的示例分析
    这篇文章主要介绍了jQuery EasyUI ProgressBar进度条组件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Pro...
    99+
    2024-04-02
  • Java二叉搜索树增、插、删、创的示例分析
    小编给大家分享一下Java二叉搜索树增、插、删、创的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!①概念二叉搜索树又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有...
    99+
    2023-06-29
  • python中搜索的示例分析
    这篇文章将为大家详细讲解有关python中搜索的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 普通搜索搜索是指从元素集合中找到某个特定元素的算法过程。搜索过程通常返回 True 或 Fals...
    99+
    2023-06-22
  • jQuery Easyui实现登陆框界面的示例分析
    这篇文章将为大家详细讲解有关jQuery Easyui实现登陆框界面的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图CSSa{   te...
    99+
    2024-04-02
  • HTML5语音搜索的示例分析
    这篇文章将为大家详细讲解有关HTML5语音搜索的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 淘宝网的语音搜索也有了一阵子了,但似乎都没看到相关的博客或帖子在...
    99+
    2024-04-02
  • 怎么为Xamarin.Forms的导航栏增加搜索功能
    本篇内容主要讲解“怎么为Xamarin.Forms的导航栏增加搜索功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么为Xamarin.Forms的导航栏增加搜索功能”吧!在使用Navigat...
    99+
    2023-06-29
  • jQuery中EasyUI页面加载等待及页面等待层的示例分析
    这篇文章主要为大家展示了“jQuery中EasyUI页面加载等待及页面等待层的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery中EasyUI页...
    99+
    2024-04-02
  • CentOS中搜索命令的示例分析
    这篇文章将为大家详细讲解有关CentOS中搜索命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。windows下在找不到一下文件啊等等我们都会使用一些搜索命令,帮助自己来找到想要的东西。linu...
    99+
    2023-06-10
  • JQuery EasyUI框架下combobox取值和绑定的示例分析
    这篇文章主要介绍了JQuery EasyUI框架下combobox取值和绑定的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Easy...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作