javascript - 一段JS代码

查看:106
本文介绍了javascript - 一段JS代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

(function ($) {
  jQuery.expr[':'].Contains = function(a,i,m){
      return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0;
  };
 
  function filterList(header, slist) {
    var form = $("<form>").attr({"class":"filterform form-search","action":"#"}),
        input = $("<input>").attr({"class":"filterinput","placeholder":"Type to Filter","type":"text"});
    $(form).append(input).appendTo(header);
 
    $(input)
      .change( function () {
        var filter = $(this).val();
        if(filter) {
 
          $matches = $(slist).find('a:Contains(' + filter + ')').parent();
          $('li', slist).not($matches).slideUp();
          $matches.slideDown();
 
        } else {
          $(slist).find("li").slideDown();
        }
        return false;
      })
    .keyup( function () {
        $(this).change();
    });
  }
 
  $(function () {
    filterList($("#form"), $("#slist"));
  });
}(jQuery));

那位同学可以给解释下这段代码的具体作用,看不懂

解决方案

通过输入一段文字来筛选对应的列表。

首先通过jQuery.expr自定义选择器:Contains,a就是当前元素,m[3]代表筛选条件。作用就是选出elem以及elem的后代节点包涵filter的。

然后添加input和form到,输入获取input的值,如果匹配list里面存在li,则存在的那一部分下拉出现

 $matches = $(slist).find('a:Contains(' + filter + ')').parent();
 $('li', slist).not($matches).slideUp();
 $matches.slideDown();

如果filter为空则全部出现

 $(slist).find("li").slideDown();

这篇关于javascript - 一段JS代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆