jquery ztree实现模糊搜索功能_jquery

本文分享了jquery ztree实现模糊搜索功能两个实例,供大家参考,具体内容如下

ztree官方demo代码里的:
根据参数查找节点
以上文件修改成如下代码

<!DOCTYPE html>
<HTML>
<HEAD>
  <TITLE> ZTREE DEMO - getNodeByParam / getNodesByParam / getNodesByParamFuzzy</TITLE>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
  <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
  <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.exhide-3.5.js"></script>
<!--<script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.exedit-3.5.js"></script>-->
  <SCRIPT type="text/javascript">

    var setting = {
      data: {
        key: {
          title: "t"
        },
        simpleData: {
          enable: true
        }
      }
    };

    var zNodes =[
      { id:1, pId:0, name:"节点属性搜索演示 1", t:"id=1"},
      { id:11, pId:1, name:"关键字可以是名字", t:"id=11"},
      { id:12, pId:1, name:"关键字可以是level", t:"id=12"},
      { id:13, pId:1, name:"关键字可以是id", t:"id=13"},
      { id:14, pId:1, name:"关键字可以是各种属性", t:"id=14"},
      { id:2, pId:0, name:"节点搜索演示 2", t:"id=2"},
      { id:21, pId:2, name:"可以只搜索一个节点", t:"id=21"},
      { id:22, pId:2, name:"可以搜索节点集合", t:"id=22"},
      { id:23, pId:2, name:"搜我吧", t:"id=23"},
      { id:3, pId:0, name:"节点搜索演示 3", t:"id=3"},
      { id:31, pId:3, name:"我的 id 是: 31", t:"id=31"},
      { id:32, pId:31, name:"我的 id 是: 32", t:"id=32"},
      { id:33, pId:32, name:"我的 id 是: 33", t:"id=33"}
    ];

    function focusKey(e) {
      if (key.hasClass("empty")) {
        key.removeClass("empty");
      }
    }
    function blurKey(e) {
      if (key.get(0).value === "") {
        key.addClass("empty");
      }
    }
    var lastValue = "", nodeList = [], fontCss = {};
    function clickRadio(e) {
      lastValue = "";
      searchNode(e);
    }
    function searchNode(e) {
      var zTree = $.fn.zTree.getZTreeObj("treeDemo");
      if (!$("#getNodesByFilter").attr("checked")) {
        var value = $.trim(key.get(0).value);
        var keyType = "";
        if ($("#name").attr("checked")) {
          keyType = "name";
        } else if ($("#level").attr("checked")) {
          keyType = "level";
          value = parseInt(value);
        } else if ($("#id").attr("checked")) {
          keyType = "id";
          value = parseInt(value);
        }
        if (key.hasClass("empty")) {
          value = "";
        }
        if (lastValue === value) return;
        lastValue = value;
        if (value === "") {
          zTree.showNodes(zTree.transformToArray(zTree.getNodes())) ;
          return;
        }

        if ($("#getNodeByParam").attr("checked")) {
          var node = zTree.getNodeByParam(keyType, value);
          if (node === null) {
            nodeList = [];
          } else {
            nodeList = [node];
          }
        } else if ($("#getNodesByParam").attr("checked")) {
          nodeList = zTree.getNodesByParam(keyType, value);
        } else if ($("#getNodesByParamFuzzy").attr("checked")) {
          nodeList = zTree.getNodesByParamFuzzy(keyType, value);
        }
      } else {
        updateNodes(false);
        nodeList = zTree.getNodesByFilter(filter);
      }
      /**不查询父级
      for(var x = 0 ; x<nodeList.length ; x++){
        if(nodeList[x].isParent){
          nodeList.splice(x--,1);
        }
      }
      */
      nodeList = zTree.transformToArray(nodeList);
      updateNodes(true);

    }
    function updateNodes(highlight) {
      var zTree = $.fn.zTree.getZTreeObj("treeDemo");
      var allNode = zTree.transformToArray(zTree.getNodes());
      zTree.hideNodes(allNode);
      for(var n in nodeList){
        findParent(zTree,nodeList[n]);
      }

      zTree.showNodes(nodeList);
    }

    function findParent(zTree,node){
      zTree.expandNode(node,true,false,false);
      var pNode = node.getParentNode();
      if(pNode != null){
        nodeList.push(pNode);
        findParent(zTree,pNode);
      }

    }

    function getFontCss(treeId, treeNode) {
      return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
    }
    function filter(node) {
      return !node.isParent && node.isFirstNode;
    }

    var key;
    $(document).ready(function(){
      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
      key = $("#key");
      key.bind("focus", focusKey)
      .bind("blur", blurKey)
      .bind("propertychange", searchNode)
      .bind("input", searchNode);

      $("#name").bind("change", clickRadio);
      $("#level").bind("change", clickRadio);
      $("#id").bind("change", clickRadio);
      $("#getNodeByParam").bind("change", clickRadio);
      $("#getNodesByParam").bind("change", clickRadio);
      $("#getNodesByParamFuzzy").bind("change", clickRadio);
      $("#getNodesByFilter").bind("change", clickRadio);

    });

  </SCRIPT>
</HEAD>

<BODY>
<h1>根据参数查找节点</h1>
<h6>[ 文件路径: core/searchNodes.html ]</h6>
<div class="content_wrap">
  <div class="zTreeDemoBackground left">
    <ul id="treeDemo" class="ztree"></ul>
  </div>
  <div class="right">
    <ul class="info">
      <li class="title"><h2>1、getNodeByParam / getNodesByParam / getNodesByParamFuzzy 方法操作说明</h2>
        <ul class="list">
        <li class="highlight_red">使用 zTreeObj.getNodeByParam / getNodesByParam / getNodesByParamFuzzy / getNodeByTId 方法,详细请参见 API 文档中的相关内容</li>
        <li><p>搜索试试看:<br/>
            属性值( value ):<input type="text" id="key" value="" class="empty" /><br/>
            属性( key ):<input type="radio" id="name" name="keyType" class="radio first" checked /><span>name (string)</span><br/>
            <input type="radio" id="level" name="keyType" class="radio" style="margin-left:68px;" /><span>level (number) ... 根节点 level = 0</span><br/>
            <input type="radio" id="id" name="keyType" class="radio" style="margin-left:68px;" /><span>id (number)</span><br/>
            方法:<input type="radio" id="getNodeByParam" name="funType" class="radio first" /><span>getNodeByParam</span><br/>
            <input type="radio" id="getNodesByParam" name="funType" class="radio" style="margin-left:36px;" /><span>getNodesByParam</span><br/>
            <input type="radio" id="getNodesByParamFuzzy" name="funType" class="radio" style="margin-left:36px;" checked /><span>getNodesByParamFuzzy (only string)</span><br/>
            <input type="radio" id="getNodesByFilter" name="funType" class="radio" style="margin-left:36px;" /><span>getNodesByFilter (参考本页源码中 function filter)</span><br/>
          </p>
        </li>
        </ul>
      </li>
      <li class="title"><h2>2、setting 配置信息说明</h2>
        <ul class="list">
        <li>不需要对 setting 进行特殊设置</li>
        </ul>
      </li>
      <li class="title"><h2>3、treeNode 节点数据说明</h2>
        <ul class="list">
        <li class="highlight_red">请注意各个方法使用时保证传入查找的参数类型与设定要查找的属性的类型一致</li>
        </ul>
      </li>
    </ul>
  </div>
</div>
</BODY>
</HTML>

这样就简单的实现了模糊搜索显示的功能了。

第二个Ztree树结构模糊搜索实现方法,具体内容如下

function expand_ztree(treeId){
    var treeObj = $.fn.zTree.getZTreeObj(treeId);
    treeObj.expandAll(true);
  }

  function close_ztree(treeId){
    var treeObj = $.fn.zTree.getZTreeObj(treeId);
    var nodes = treeObj.transformToArray(treeObj.getNodes());
    var nodeLength = nodes.length;
    for (var i = 0; i < nodeLength; i++) {
      if (nodes[i].id == '0') {
        //根节点:展开         treeObj.expandNode(nodes[i], true, true, false);
      } else {
        //非根节点:收起         treeObj.expandNode(nodes[i], false, true, false);
      }
    }
  }

  function search_ztree(treeId, searchConditionId){
    searchByFlag_ztree(treeId, searchConditionId, "");
  }

  function searchByFlag_ztree(treeId, searchConditionId, flag){
    //<1>.搜索条件     var searchCondition = $('#' + searchConditionId).val();
    //<2>.得到模糊匹配搜索条件的节点数组集合     var highlightNodes = new Array();
    if (searchCondition != "") {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      highlightNodes = treeObj.getNodesByParamFuzzy("name", searchCondition, null);
    }
    //<3>.高亮显示并展示【指定节点s】     highlightAndExpand_ztree(treeId, highlightNodes, flag);
  }

  function highlightAndExpand_ztree(treeId, highlightNodes, flag){
    var treeObj = $.fn.zTree.getZTreeObj(treeId);
    //<1>. 先把全部节点更新为普通样式     var treeNodes = treeObj.transformToArray(treeObj.getNodes());
    for (var i = 0; i < treeNodes.length; i++) {
      treeNodes[i].highlight = false;
      treeObj.updateNode(treeNodes[i]);
    }
    //<2>.收起树, 只展开根节点下的一级节点     close_ztree(treeId);
    //<3>.把指定节点的样式更新为高亮显示,并展开     if (highlightNodes != null) {
      for (var i = 0; i < highlightNodes.length; i++) {
        if (flag != null && flag != "") {
          if (highlightNodes[i].flag == flag) {
            //高亮显示节点,并展开             highlightNodes[i].highlight = true;
            treeObj.updateNode(highlightNodes[i]);
            //高亮显示节点的父节点的父节点....直到根节点,并展示             var parentNode = highlightNodes[i].getParentNode();
            var parentNodes = getParentNodes_ztree(treeId, parentNode);
            treeObj.expandNode(parentNodes, true, false, true);
            treeObj.expandNode(parentNode, true, false, true);
          }
        } else {
          //高亮显示节点,并展开           highlightNodes[i].highlight = true;
          treeObj.updateNode(highlightNodes[i]);
          //高亮显示节点的父节点的父节点....直到根节点,并展示           var parentNode = highlightNodes[i].getParentNode();
          var parentNodes = getParentNodes_ztree(treeId, parentNode);
          treeObj.expandNode(parentNodes, true, false, true);
          treeObj.expandNode(parentNode, true, false, true);
        }
      }
    }
  }

  function getParentNodes_ztree(treeId, node){
    if (node != null) {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      var parentNode = node.getParentNode();
      return getParentNodes_ztree(treeId, parentNode);
    } else {
      return node;
    }
  }

  function setFontCss_ztree(treeId, treeNode) {
    if (treeNode.id == 0) {
      //根节点       return {color:"#333", "font-weight":"bold"};
    } else if (treeNode.isParent == false){
      //叶子节点       return (!!treeNode.highlight) ? {color:"#ff0000", "font-weight":"bold"} : {color:"#660099", "font-weight":"normal"};
    } else {
      //父节点       return (!!treeNode.highlight) ? {color:"#ff0000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
    }
  }

  //==============HTML==============  

class="padd" style="padding-bottom: 0px;">

class="input-append row-fluid" style="margin-bottom: 0px;">
      "search_condition" type="text" placeholder="请输入搜索条件" class="span8" style="font-size:12px"/>
      "button" class="btn btn-info" onclick="search_ztree('dep_tree', 'search_condition')">搜索

"dep_tree" class="ztree">

以上就是jquery ztree实现模糊搜索功能的代码,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
, 模糊搜索
ztree
jquery实现模糊搜索、jquery实现模糊搜索框、ztree模糊搜索子节点、ztree模糊搜索、ztree异步模糊搜索,以便于您获取更多的相关知识。

时间: 2024-09-22 01:28:15

jquery ztree实现模糊搜索功能_jquery的相关文章

基于jQuery实现网页打印功能_jquery

直接上代码 <!DOCTYPE html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>index</title> </head> <body> <div style="text-align:cent

基于jQuery实现收缩展开功能_jquery

本文实例向大家分享了一款基于jQuery实现收起展开功能特效,供大家参考,具体内容如下 效果图: 点击倒三角可以进行展开操作 具体代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-widt

基于jquery实现日历签到功能_jquery

在一些任务游戏.贴吧管理中都会有一个签到功能,帮助大家记录登录天数,积累等级经验,这个日历签到功能是如何实现的,本文为大家进行演. 本文实例讲述了基于jquery实现日历签到功能.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml

基于jQuery实现页面搜索功能_jquery

jQuery实现页面搜索,搜索筛选用户输入的内容! HTML: <div class="table"> <table> <tr id="theader"> <th>姓名</th> <th>性别</th> <th>联系方式</th> </tr> <tr> <td>客服</td> <td>女</td

jquery 实现返回顶部功能_jquery

今天搞了一个回到顶部的JS JQ功能,废话不多说,有图有真相! 复制代码 代码如下: (function($){       $.fn.survey=function(options){  var defaults={width:"298",height:"207"};  var options=$.extend(defaults,options);      if($.browser.msie){      var ieVersion=parseInt($.bro

jQuery实现的在线答题功能_jquery

有时在网页中要加入一个在线测试功能,例如在线调查,在线测试各类知识等应用,这类应用需要用到很多前后端技能.今天我给大家分享一个基于jQuery的前端应用--测试答题功能. HTML 首先载入jquery库文件和quiz.js以及所需的CSS样式文件styles.css.   <script src="jquery.js"></script> <script src="quiz.js"></script> <lin

jQuery实现返回顶部功能_jquery

代码很简单,这里就不多废话了,小伙伴们看代码吧. HTML:         <!--Go to Top--> <div id="Fixed"> <a id="goTop" class="fl" title="去顶部" href="javascript:;">去顶部</a> </div> <!--Go to Top end--> CSS

js+jquery实现图片裁剪功能_jquery

现在我们在使用各大网站的个人中心时,都有个上传个人头像的功能.用户在上传了个人照片之后,可能不符合网站的要求,于是要求用户对照片进行裁剪,最终根据用户裁剪的尺寸生成头像.这个功能真是太棒了,原来不懂js的时候,感觉很神奇,太神奇了.心想哪天要是自己也能搞明白这里面的技术,那该多牛呀~大家是不是也有何我一样的想法呀~哈哈~~ 下面我们就来用javascript来实现这个功能吧. 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.

使用Jquery实现每日签到功能_jquery

一直想做一个签到功能,但是百度了都没有自己想要的,所以就借着网上搜到的素材然后整合自己之前写的插件layerModel自己整合了一个,大家娱乐娱乐就好! calendar.js var calUtil = { getDaysInmonth : function(iMonth, iYear){ var dPrevDate = new Date(iYear, iMonth, 0); return dPrevDate.getDate(); }, bulidCal : function(iYear, i