jQuery在项目列表中搜索

jQuery在项目列表中搜索,jquery,Jquery,我正在使用jQuery构建一个简单的搜索功能,它将根据用户作为查询输入的内容过滤项目列表。它不会做任何花哨的算法,只是一个简单的匹配 在这里拉小提琴: 如你所见,我有嵌套列表。计划是,如果任何列表项匹配,那么它应该显示最高的父项,并隐藏所有没有匹配项的其他项 如果用户未键入任何内容,则所有列表项应再次显示 有人能帮我指出正确的方向吗。我尝试使用jqueryeach方法查找包含查询的所有项并显示它们,但它将它们全部隐藏…它不喜欢您使用contains(),它用于元素,而不是文本。我把它改成使用过滤

我正在使用jQuery构建一个简单的搜索功能,它将根据用户作为查询输入的内容过滤项目列表。它不会做任何花哨的算法,只是一个简单的匹配

在这里拉小提琴:

如你所见,我有嵌套列表。计划是,如果任何列表项匹配,那么它应该显示最高的父项
  • ,并隐藏所有没有匹配项的其他项

    如果用户未键入任何内容,则所有列表项应再次显示


    有人能帮我指出正确的方向吗。我尝试使用jqueryeach方法查找包含查询的所有项并显示它们,但它将它们全部隐藏…

    它不喜欢您使用
    contains()
    ,它用于元素,而不是文本。我把它改成使用过滤器。我还让它隐藏每个元素,而不仅仅是子元素
    li
    元素,因此所有元素都被隐藏了

    它现在可以工作了,但请记住它是区分大小写的


    它不喜欢您使用
    contains()
    ,它用于元素,而不是文本。我把它改成使用过滤器。我还让它隐藏每个元素,而不仅仅是子元素
    li
    元素,因此所有元素都被隐藏了

    它现在可以工作了,但请记住它是区分大小写的

    够了吗?够了吗?
    $('form.groups-search').live('submit', function(e) {
        e.preventDefault();
        query = $('input#q').val();
        if (query === "") {
            $('ul.groups-tree *').show();
        } else {
            $('ul.groups-tree *').hide();
            $('ul.groups-tree li').filter(function () {
                return $(this).text().indexOf(query) != -1;
            }).show().parents().show();
        }
    });?