jQuery实现的模糊查询

需求:list列表内容很多,用户需要找出列表内容中的某些条目,只有当与用户输入值匹配的条目才显示出来。(后台无分页,直接异步接口返回数据添加形成的内容列表)
虽然可以通过传参再调用查询出来,但这里主要记录的是前端处理进行模糊查询而无需再次调用接口的实现方法。
html部分:

<div class="search-form">
        <input type="text" placeholder="请输入关键词">
        <span class="icon-clear"></span>
</div>
<div class="content">
    <div class="title row no-gutter">
        <div class="col-20">列表一</div>
        <div class="col-20">列表二</div>
        <div class="col-20">列表三</div>
        <div class="col-20">列表四</div>
        <div class="col-20">列表五</div>
    </div>
    <div class="list-content">
        <ul>
            <li>
                <div class="code">00001</div>
                <div class="name">内容1</div>
                <div>内容2</div>
                <div>内容3</div>
                <div>内容4</div>
            </li>
            <li>……</li>
        </ul>
    </div>
</div>

js部分:

queryList: function(){
    $(".search-input").on("input propertychange", function() {
        var queryStr = $.trim($(".search-input").val());
        if(queryStr === ''){
            $(".list-content li").show();
        }else{
        // 以下是匹配某些列的内容,如果是匹配全部列的话就把find()和.parent()去掉即可
            $(".list-content li").hide().find(".code, .name").filter(":contains('"+queryStr+"')").parent("li").show();
            //$(".list-content").refresh(); //重新刷新列表把隐藏的dom结构去掉。
        }
    });
}

以上即实现了前端js的模糊查询功能啦,哈哈。代码中监听事件中多加了input,据说是为兼容iOS的,具体没测试,有哪位大神测试了可以告知一声哈,谢谢了。

还有个问题就是,以上实现方法,当列表内容多大几千条数目或者更多时,表单输入时会出现卡顿的情况,因为要通过js操作大量的DOM结构啊(隐藏或显示),PC上或许情况还没有那么严重,在手机上测试时那真的是“怎一个卡字了得”啊,如果我是那个使用此功能的用户,我肯定会放弃不愿使用的,因为:太卡了,有某有?!有没有哪位大神有好法子的,望不吝赐教啊!

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值