jquery - JQuery如何不对隐藏项目应用过滤器
问题描述
所以我做了3个按钮来隐藏div,我还做了一个文本框来过滤里面的文本,但是例如我隐藏了A然后在搜索中我查找它显示的A?它不应该被显示,因为它已经被隐藏了!有任何想法吗?
$(document).ready(function(){
var $btns = $('').click(function() {
})
var $search = $("#search").on('input',function(){
$btns.removeClass('active');
var matcher = new RegExp($(this).val(), 'gi');
$('.box').show().not(function(){
return matcher.test($(this).find('.h5text').text())
}).css("display","none")
$('.box').each(function()
{
var html = $(this).find('.h5text').text();
var text = $("#myins").val();
var index = html.toLowerCase().indexOf(text.toLowerCase());
if (index >= 0) {
html = html.substring(0,index) + "<span style='background-color: yellow;'>" +html.substring(index,index+text.length) + "</span>" + html.substring(index + text.length);
$(this).find('.h5text').html(html);
}
})
})
$("#a").click(function(){
$(".a").hide();
});
$("#b").click(function(){
$(".b").hide();
});
$("#c").click(function(){
$(".c").hide();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="a" type="button">Hide A</button>
<button id="b" type="button">Hide B</button>
<button id="c" type="button">Hide C</button>
<br><br>
<input type="text" id="search">
<br><br>
<div class="box a">
<p class="h5text">This is A</p>
</div>
<div class="box b">
<p class="h5text">This is B</p>
</div>
<div class="box c">
<p class="h5text">This is C</p>
</div>
解决方案
你可以removeClass("h5text")
排队你隐藏。
$(document).ready(function(){
var $btns = $('').click(function() {
})
var $search = $("#search").on('input',function(){
$btns.removeClass('active');
var matcher = new RegExp($(this).val(), 'gi');
$('.box').show().not(function(){
return matcher.test($(this).find('.h5text').text())
}).css("display","none")
$('.box').each(function()
{
var html = $(this).find('.h5text').text();
var text = $("#myins").val();
var index = html.toLowerCase().indexOf(text.toLowerCase());
if (index >= 0) {
html = html.substring(0,index) + "<span style='background-color: yellow;'>" +html.substring(index,index+text.length) + "</span>" + html.substring(index + text.length);
$(this).find('.h5text').html(html);
}
})
})
$("#a").click(function(){
$(".a").hide();
$(".a .h5text").removeClass("h5text");
});
$("#b").click(function(){
$(".b").hide();
$(".b .h5text").removeClass("h5text");
});
$("#c").click(function(){
$(".c").hide();
$(".c .h5text").removeClass("h5text");
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="a" type="button">Hide A</button>
<button id="b" type="button">Hide B</button>
<button id="c" type="button">Hide C</button>
<br><br>
<input type="text" id="search">
<br><br>
<div class="box a">
<p class="h5text">This is A</p>
</div>
<div class="box b">
<p class="h5text">This is B</p>
</div>
<div class="box c">
<p class="h5text">This is C</p>
</div>
推荐阅读
- go - 从扩展添加虚拟表时如何提供表规范
- swift - 从 shouldChangeTextIn 更新 UITextView 值返回字符两次
- python - 如何使用多索引过滤器为列分配值?
- javascript - 通常将上下文应用于方法别名
- grouping - 从制表器下载 pdf 时保留 ColumnCalculations 的格式
- python - 启用以记录调试语句
- javascript - 如何在时事通讯表单上实施 Google 的 reCaptcha v3?
- javascript - 添加悬停效果以使用内联样式对 div 做出反应
- nginx - 当proxy_pass通过2个nginx时Websocket 404
- excel - 如果我在 VBA 中创建一个具有相同名称的新实例,会发生什么情况?