请参阅以下代码:
<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 排除它。 .
$('ul:not(#category3) li').each(function() {
// ...
});
如果您必须排除多个元素,最好只排除特定的类。
在本例中,.exclude
类已添加到第三个 ul
元素:
$('ul:not(.exclude) li').each(function() {
// ...
});
关于javascript - 过滤多个列表但不是全部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468372/