簡體   English   中英

如何使用輸入過濾器在 Div 上進行實時搜索

[英]How to make live search on an Div with input filter

我在使用實時搜索腳本時遇到了一些問題。

我想在我的搜索輸入中鍵入一些內容以隱藏搜索輸入中不包含此文本的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>

我自己可以使用each()方法提供解決方案。

 $("#box").on('keyup', function(){ let value = $(this).val().toLowerCase(); $('#Container div[data-name]').each(function () { if ($(this).text().toLowerCase().indexOf(value) === -1) { $(this).hide(); } else { $(this).show(); } }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM