为jQuery EasyUI tree增加搜索功能(二)

效果如下:
这里写图片描述

实现代码如下:

/**
 * 树形菜单搜索方法
 * 
 * @author bin.zhang
 */
function searchTree(treeObj, parentNode, searchCon) {
    $(treeObj).tree('collapseAll'); //折叠所有
    var children;
    for (var i = 0; i < parentNode.length; i++) { //循环顶级 node
        children = $(treeObj).tree('getChildren', parentNode[i].target); //获取顶级node下所有子节点
        if (children) { //如果有子节点
            for (var j = 0; j < children.length; j++) { //循环所有子节点
                if ($(treeObj).tree('isLeaf', children[j].target)) { //判断子级是否为叶子节点,即不是父节点
                    if (children[j].text.indexOf(searchCon) >= 0) { //判断节点text是否包含搜索文本                    
                        selectNode(treeObj, children[j]); //设置此节点为选择状态
                        expandParent(treeObj, children[j]); //设置此节点所有父级展开
                        break;
                    }
                }
            }
        } else {
            if (parentNode[i].text.indexOf(searchCon) >= 0) {
                selectNode(treeObj, parentNode[i]);
                expandParent(treeObj, parentNode[i]);
                break;
            }
        }
    }
}

/**
 * 标记为选择状态
 * 
 * @author bin.zhang
 */
function selectNode(treeObj, node) {
    $(treeObj).tree('select', node.target);
}

/**
 * 展开所有父级节点
 * 
 * @author bin.zhang
 */
function expandParent(treeObj, node) {
    var parent = node;
    var t = true;
    do {
        parent = $(treeObj).tree('getParent', parent.target); //获取此节点父节点
        if (parent) { //如果存在
            t = true;
            $(treeObj).tree('expand', parent.target);
        } else {
            t = false;
        }
    } while (t);
}

/**
 * 调用搜索方法
 * 
 * @author bin.zhang
 */
function sysTextSearch(inputID, treeID) {
    var search_content = $('#' + inputID).val(); //得到搜索的文件
    if (search_content == '') {
        $('#' + treeID).tree('expandAll'); //展开所有
    } else {
        var roots = $('#' + treeID).tree('getRoots'); //得到tree顶级node
        searchTree($('#' + treeID), roots, search_content);
    }
}

使用如下:

/**
 * @author bin.zhang
 * 
 * 根据输入框中的关键字,搜索对应的接口并展开
 */
function searchAndSpread(that) {
    var curTreeId = getCurrentTreeId()//目录树的id
    var keyInputId = curTreeId.replace("tree", "keyword")//搜索框的id
    sysTextSearch(keyInputId,curTreeId);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值