javascript - 如何使用输入过滤器在 Div 上进行实时搜索
问题描述
我在使用实时搜索脚本时遇到了一些问题。
我想在我的搜索输入中键入一些内容以隐藏搜索输入中不包含此文本的div 。到目前为止我的代码。
<html>
<head></head>
<body>
<input placeholder="Search Me" id="box" type="text" />
<div id="Container">
<div data-name="Anni">
Anni
</div>
<div data-name="Pedro">
Pedro
</div>
<div data-name="Tomi">
Tomi
</div>
</div>
</body>
</html>
JavaScript:
$("#box").on('keyup', function(){
var matcher = new RegExp($(this).val(), 'gi');
$('#Container').show().not(function(){
return matcher.test($(this).find('data-name').text())
}).hide();
});
解决方案
您需要搜索children()
容器并使用filter()
而不是not()
$("#box").on('keyup', function(){
var matcher = new RegExp($(this).val(), 'gi');
$('#Container').children().hide().filter(function(){
return matcher.test($(this).text())
}).show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input placeholder="Search Me" id="box" type="text" />
<div id="Container">
<div data-name="Anni">
Anni
</div>
<div data-name="Pedro">
Pedro
</div>
<div data-name="Tomi">
Tomi
</div>
</div>
推荐阅读
- asp.net-core - 如何在 ASP.NET Core Identity 中扩展和验证会话?
- javascript - 设置 cookie 以存储游戏数据
- javascript - 如何计算午夜 24 小时格式的时差
- java - 如何使用新的导航架构组件保存片段的实例
- javascript - 背景视频播放列表
- git - 如何管理多语言项目的位存储库
- ios - 如何通过页脚单元格在表格视图中使用委托?
- docker - 缺少高山包 py3-scipy
- jenkins - 詹金斯如何设置所有带有前缀“blah”的作业,以便在超过时间限制时停止
- ionic4 - toast.present() 在 Ionic 4 中失败