我想用jQuery进行实时搜索。这是我的代码:
$("#searchInput").on("keyup", function () {
var searchTerm = $("#searchInput").val();
$('li:contains("' + searchTerm + '")').show().siblings(':not(li:contains("' + searchTerm + '"))').hide();
});
显示包含“搜索文本”的<li>
正常工作,但第二部分(隐藏其余项目)无效。
当我搜索不相关的字词时,如何隐藏<li>
?
答案 0 :(得分:2)
您可以使用jQuery.not
解决方案1
$("#searchInput").on("keyup", function() {
var searchTerm = $("#searchInput").val();
$("ul li").show().not($('li:contains("' + searchTerm + '")')).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="searchInput" />
<ul>
<li>
Hello
</li>
<li>
World
</li>
<li>
List 1
</li>
<li>
Word
</li>
<li>
Another Li
</li>
</ul>
您可以使用jQuery filter(参见下面的代码段)
解决方案2
$("#searchInput").on("keyup", function() {
var searchTerm = $("#searchInput").val();
$("ul li").show().filter(function() {
return $(this).text().indexOf(searchTerm) == -1
}).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="searchInput" />
<ul>
<li>
Hello
</li>
<li>
World
</li>
<li>
List 1
</li>
<li>
Word
</li>
<li>
Another Li
</li>
</ul>