jQuery EasyUI tree增加搜索功能的实现方法
扩展jQueryEasyUItree搜索树节点的方法,使其支持节点名称的模糊匹配,将不匹配的节点隐藏。
/** *1)扩展jqueryeasyuitree的节点检索方法。使用方法如下: *$("#treeId").tree("search",searchText); *其中,treeId为easyuitree的根UL元素的ID,searchText为检索的文本。 *如果searchText为空或"",将恢复展示所有节点为正常状态 */ (function($){ $.extend($.fn.tree.methods,{ /** *扩展easyuitree的搜索方法 *@paramtreeeasyuitree的根DOM节点(UL节点)的jQuery对象 *@paramsearchText检索的文本 *@paramthis-contexteasyuitree的tree对象 */ search:function(jqTree,searchText){ //easyuitree的tree对象。可以通过tree.methodName(jqTree)方式调用easyuitree的方法 vartree=this; //获取所有的树节点 varnodeList=getAllNodes(jqTree,tree); //如果没有搜索条件,则展示所有树节点 searchText=$.trim(searchText); if(searchText==""){ for(vari=0;i0){ varnode=null; for(vari=0;i 0){ for(vari=0;i (containerH-30)){ varscrollHeight=container.scrollTop()+nodeOffsetHeight-containerH+30; container.scrollTop(scrollHeight); } } } }); /** *展示搜索匹配的节点 */ functionshowMatchedNode(jqTree,tree,node){ //展示所有父节点 $(node.target).show(); $(".tree-title",node.target).addClass("tree-node-targeted"); varpNode=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); } } /** *判断searchText是否与targetText匹配 *@paramsearchText检索的文本 *@paramtargetText目标文本 *@returntrue-检索的文本与目标文本匹配;否则为false. */ functionisMatch(searchText,targetText){ return$.trim(targetText)!=""&&targetText.indexOf(searchText)!=-1; } /** *获取easyuitree的所有node节点 */ functiongetAllNodes(jqTree,tree){ varallNodeList=jqTree.data("allNodeList"); if(!allNodeList){ varroots=tree.getRoots(jqTree); allNodeList=getChildNodeList(jqTree,tree,roots); jqTree.data("allNodeList",allNodeList); } returnallNodeList; } /** *定义获取easyuitree的子节点的递归算法 */ functiongetChildNodeList(jqTree,tree,nodes){ varchildNodeList=[]; if(nodes&&nodes.length>0){ varnode=null; for(vari=0;i 以上所述是小编给大家介绍的jQueryEasyUItree增加搜索功能的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!