Javascript 如何隐藏属性不为';与输入值不匹配?

Javascript 如何隐藏属性不为';与输入值不匹配?,javascript,jquery,html,Javascript,Jquery,Html,我有一个包含各种链接的列表,我想使用输入字段进行搜索 <form> <input id="search"> </form> <ul> <li data-name="one"></li> <li data-name="two"></li> <li data-name="ozone"></li> </ul> 在输入字段中键

我有一个包含各种链接的列表,我想使用输入字段进行搜索

<form>
    <input id="search">
</form>
<ul>
    <li data-name="one"></li>
    <li data-name="two"></li>
    <li data-name="ozone"></li>
</ul>

在输入字段中键入“on”或其他各种单词片段时,如何使用jquerys keyup事件隐藏数据名为“two”的li

搜索:“两个”

  • 两个
搜索:“o”

  • 一个
  • 两个
  • 臭氧层
搜索:“打开”

  • 一个
  • 臭氧层
这里有一个JSFIDLE,介绍了我到目前为止所拥有的内容,但它只通过从单词的开头进行匹配来工作,而不是内联


我建议遍历所有li,并根据输入值隐藏它们:

$("#search").on("keyup", function() {
    $("li").each(function(index, li) {
        if ($(li).data("data-name").indexOf($("#search").val()) < 0) {
            $(li).hide();
        }
    });
});
$(“#搜索”)。在(“键控”,函数()上{
$(“li”)。每个函数(索引,li){
if($(li).data(“数据名”).indexOf($(“#搜索”).val())<0){
$(li.hide();
}
});
});
试试这个:

$('#search').keyup(function()
{
    var val = this.value;

    if (val)
        $('ul > li:not([data-name*="' + val + '"])').hide();
    else
        $('ul > li').show();
});

似乎与标题相反,您希望隐藏属性值与输入值不匹配的元素。此外,这项任务没有明确规定,实际上是一项任务分配,而不是一个适合这样做的问题。你应该详细说明你想要什么,展示你已经尝试过的,并解释它是如何失败的。我已经编辑了“问题”来尝试并澄清问题,还包括了一个我尝试过的JSFIDLE链接。谢谢,我完全不知道*会在这方面起作用,也没有想过尝试它。我只熟悉^和$。