不区分大小写的Jquery筛选器列表

不区分大小写的Jquery筛选器列表,jquery,Jquery,我想筛选不区分大小写的列表。我只想匹配字符,不匹配大写或小写 XXXXXXX YYYYYY XXxxx 如果我在搜索框中输入“X”,它将同时显示1和3。我在下面添加了代码,但它也匹配区分大小写的代码 <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script>

我想筛选不区分大小写的列表。我只想匹配字符,不匹配大写或小写

  • XXXXXXX
  • YYYYYY
  • XXxxx
  • 如果我在搜索框中输入“X”,它将同时显示1和3。我在下面添加了代码,但它也匹配区分大小写的代码

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>
        function filter(element) {
            var value = $(element).val();
            $("#theList > li").each(function() {
                if ($(this).text().search(value) > -1) {
                    $(this).show();
                }
                else {
                    $(this).hide();
                }
            });
        }
    </script>
    </head>
    <body>
    <input type="text" onkeyup="filter(this)" />
    <ul id="theList">
        <li>xxvxvxx</li>
        <li>yyyyyyyyyy</li>
        <li>rrrrrrrrrr</li>
        <li>vvvvvvvvvvv</li>
        <li>xcvcvdfsdf</li>
        <li>hkjhkhjkh</li>
        <li>xzfgfhfgh</li>
    </ul>
    
    </body>
    </html>
    
    
    功能过滤器(滤芯){
    var值=$(元素).val();
    $(“#列表>li”)。每个(函数(){
    if($(this).text().search(value)>-1){
    $(this.show();
    }
    否则{
    $(this.hide();
    }
    });
    }
    
    • xxvxvxx
    • YYYYYYYY
    • rrrrrrrrrrrrrr
    • VVVVVV
    • xCVCVDF
    • hkjhjkh
    • XZFGFhGH

    您需要使用
    indexOf

    $(this).text().search(value)
    
    应该是

    $(this).text().indexOf(value)
    
    以及为什么要使用属性标记附加事件。这是一种不好的做法,应该避免

    可以使用jQuery附加事件

    $('input').keyup(function() {
        filter(this); 
    });
    
    function filter(element) {
        var value = $(element).val().toLowerCase();
        $("#theList > li").each(function () {
            var $this = $(this),
                lower = $this.text;
            if (lower.indexOf(value) > -1) {
                $this.show();
            } else {
                $this.hide();
            }
        });
    }
    

    使用
    filter

    function filter(element) {
        var value = $(element).val().toLowerCase();
        $("#theList > li").hide().filter(function() {
            return $(this).text().toLowerCase().indexOf(value) > -1;
        }).show();
    }
    
    试试这个:

      function filter(element) {
            var value = $(element).val();
            $("#theList > li").hide();
            $("#theList > li:contains('" + value + "')").show();
        }
    
    替换

    $(this).text().search(value) > -1
    
    与:

    这就应该奏效了。这里有一个正在工作的

    只需添加
    
    jQuery.expr[“:”].contains=函数(a,i,m){
    返回(a.textContent | | a.innerText | |“”).toUpperCase().indexOf(m[3].toUpperCase())>=0;};
    

    是否可以执行不区分重音的版本?是否可能重复
    $(this).text().search(new RegExp(value, "i")) > -1