javascript - 过滤多个列表但不是全部?

标签 javascript jquery

请参阅以下代码:

<input type="text" />

<h3>Category 1</h3>
<ul id="category1">
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>
</ul>

<h3>Category 2</h3>
<ul>
    <li>item27</li>
    <li>item28</li>
</ul>

<h3>Category 3</h3>
<ul>
    <li>item132</li>
    <li>item437</li>
</ul>

这是JS

$(function(){

    $('input[type="text"]').keyup(function(){

        var text = $(this).val().toLowerCase();

        $('ul li').each(function(){

             if($(this).text().toLowerCase().indexOf(text) == -1)
                 $(this).hide();
             else
                $(this).show();

        });     
    });

});

这将过滤列表,但我的问题是如何让它过滤类别 1 和 2 列表,但不过滤类别 3 列表。我希望类别 3 列表保持不变,因为其他列表已被过滤掉。预先感谢您的任何建议或指导。

最佳答案

如果您为第三个 ul 提供 id,那么您可以使用 :not() pseudo-class 排除它。 .

Updated Example

$('ul:not(#category3) li').each(function() {
  // ...
});

如果您必须排除多个元素,最好只排除特定的类。

在本例中,.exclude 类已添加到第三个 ul 元素:

$('ul:not(.exclude) li').each(function() {
  // ...
});

关于javascript - 过滤多个列表但不是全部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468372/

相关文章:

javascript - 从先前加载的 JS 文件调用函数

javascript - 如何在js中从子事件返回 false 到父事件

javascript - React JS : history. Push 不是函数错误,并且它没有导航到 swal 的 onclick 的不同页面

php - 当客户不再存在时删除 session

javascript - Summernote Editor - 将中继器字段添加到对话框

jquery - 如果 :visited link 则隐藏父级的方法

javascript - 在 JavaScript 中监控单页加载时间

javascript - 检查字符串是否为整数

javascript - 单击按钮时添加/删除要列出的 <li> 项目 - Twitter Bootstrap

Jquery 如何更改可扩展部分上的 +、-