Javascript 在任何位置包含搜索词的筛选器元素

Javascript 在任何位置包含搜索词的筛选器元素,javascript,jquery,Javascript,Jquery,目前,我有一个基于输入筛选列表的函数,但是它只尝试与第一个字母匹配,而不是在任何地方查找输入文本。例如,我的意思是,当用户键入“Eng”时,它将与“England”匹配,并删除其他名称,这很好,但是如果用户键入“land”,则不会显示匹配项,而不是显示列表中名称中包含“land”的所有国家 $(function() { $("input").keyup(function() { var val = $(this).val(); $("ul li").sho

目前,我有一个基于输入筛选列表的函数,但是它只尝试与第一个字母匹配,而不是在任何地方查找输入文本。例如,我的意思是,当用户键入“Eng”时,它将与“England”匹配,并删除其他名称,这很好,但是如果用户键入“land”,则不会显示匹配项,而不是显示列表中名称中包含“land”的所有国家

$(function() {
    $("input").keyup(function() {
        var val = $(this).val();
        $("ul li").show().filter(function() {
            return $(this).text().toLowerCase().trim().indexOf(val);
        }).hide();
    });
});

要显示我当前使用的内容:

如果您正在使用,请利用
:contains
。此方法将返回包含所有匹配元素的jQuery对象

$(函数(){
$(“输入”).keyup(函数(){
var val=$(this.val();
$(“ul>li”).hide();
$(“ul>li:contains(“+val+”))”)。show();
});
});
输入{
填充物:5px;
利润率:0.5px;
}
保险商实验室{
利润率:10px0;
}
李{
显示:无;
}

  • 英格兰
  • 威尔士
  • 苏格兰
  • 爱尔兰

试试这样的方法

$(function () {
  $("input").keyup(function () {
    var val = $(this).val();
    $("ul li").show().filter(function () {
        if($(this).text().toLowerCase().trim().indexOf(val) > -1){
           return 0;
        }
        return 1;
    }).hide();
  });
});

只需添加
filter()
条件即可。