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;i0){
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增加搜索功能的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!