jquery - 在 jquery 中自定义搜索过滤器

标签 jquery

当用户输入时,我已经使用jquery实现了一个搜索过滤器。我希望当用户输入时过滤标题和子元素。问题是当我搜索子元素时,即。 333(fiddler中所示的例子),222也出现了,这是不应该发生的;只有 333 应该被过滤。

$("#search").keyup(function () {
    var SEARCHWORD = this.value;

    $("#list li").each(function () {
        $(this).hide();

        $('h3:contains(' + SEARCHWORD + ')').closest('li').show();
        $('table:contains(' + SEARCHWORD + ')').closest('li').show();
        $('table:contains(' + SEARCHWORD + ')').show().siblings('table').hide();

        if (SEARCHWORD == "") {
            $('#list').find('table:hidden').show();
        }
    });
});

我已附加 jsfiddle 链接“My Test Fiddle

最佳答案

简单的解决方案是在每个表行 (tr) 之前添加表,而不是将 2 个 tr 放入 1 个表中。

HTML:

<ul id='list'>
    <li id='a1'>
         <h3>Header1</h3> 
        <table>
            <tr>
                <td>aaa</td>
            </tr>
        </table>
        <table>
            <tr>
                <td>xxx</td>
            </tr>
        </table>
        <table>
            <tr>
                <td>def</td>
            </tr>
        </table>
    </li>
    <li id='a2'>
         <h3>Header2</h3> 
        <table>
            <tr>
                <td>333</td>
            </tr>
        </table>
        <table>
            <tr>
                <td>222</td>
            </tr>
        </table>
        <table>
            <tr>
                <td>111</td>
            </tr>
        </table>
    </li>
</ul>

jQuery(未更改)

$("#search").keyup(function () {
    var SEARCHWORD = this.value;
     $("#list li").each(function () {
        $(this).hide();
        $('h3:contains(' + SEARCHWORD + ')').closest('li').show()
        $('table:contains(' + SEARCHWORD + ')').closest('li').show();
        $('table:contains(' + SEARCHWORD + ')').show().siblings('table').hide();
        if (SEARCHWORD == "") {
            $('#list').find('table:hidden').show();
        }
    });
});

JSFiddle demo

关于jquery - 在 jquery 中自定义搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427186/

相关文章:

jquery - 验证输入的电子邮件地址是否存在

jquery - 同一列表中的 2 个不同的可排序项

jquery - 内联脚本到 jQuery 函数以淡化动态页面上的图像

javascript - Asp 表单输入字段无法传递来自 jQuery 对话框的信息

jquery - Telerik RadTreeView 不支持 Accordion jquery?

javascript - Bootstrap 导航的背景颜色在事件时不会改变?

javascript - jQuery:根据数组中的值检查输入值

javascript - jQuery CSS 不透明度动画

javascript - 类更改后的 Jquery 函数

jquery - 如果元素在视口(viewport)中 - 停止滚动动画