jquery过滤器搜索应根据文本选择匹配的DIV

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery过滤器搜索应根据文本选择匹配的DIV相关的知识,希望对你有一定的参考价值。

我正在使用jquery过滤器搜索来搜索由从数据库中获取数据的循环生成的DIV列表。因此,每一小部分信息都有相同的Div自我包裹。

我的问题是搜索正在搜索整个文本并排除与搜索无关的所有内容。

这是一个Fiddle,显示我的代码现在如何工作。

我希望我的搜索功能是,例如,如果我搜索公司2,我希望显示与该公司相关的每一条信息。

希望有人可以帮助我。

这是jquery

$(document).ready(function()
   $("#searchInput").on("keyup", function() 
    var value = $(this).val().toLowerCase();
    $("#searchFilterDiv *").filter(function() 
   $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
  );
 );
);

这是html。在现实生活中,大约有50个div,都有相同类型的CompanyDirectoryItem,但它的data-name是从数据库生成的。

<input id="searchInput" type="text" placeholder="text"></input>

 <div id="searchFilterDiv">

   <div class="CompanyDirectoryItem" data-name="some-data">  
    <h3> Some Company</h3>
      <a>some-data</a>
      <p> some text</p> 
   </div> 


   <div class="CompanyDirectoryItem" data-name="other-data">  
    <h3> Company 2 </h3>
     <a>other-data</a>
     <p>part of stuff</p> 
   </div> 

   <div class="CompanyDirectoryItem" data-name="data-of-data">  
    <h3> Company 3 </h3>   
     <a>data-of-data</a>
     <p>sportsware company</p> 
     <p>adress</p>  
   </div> 

 </div>
答案

而不是*,你只需要将div.CompanyDirectoryItem放在jquery选择器中,它将返回整个div而不仅仅是匹配元素

$(document).ready(function()
  $("#searchInput").on("keyup", function() 
    var value = $(this).val().toLowerCase();
    $("#searchFilterDiv div.CompanyDirectoryItem").filter(function() 
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    );
  );
);

JSfiddle

以上是关于jquery过滤器搜索应根据文本选择匹配的DIV的主要内容,如果未能解决你的问题,请参考以下文章

jQuery选择器

jQuery的12种选择器

jQuery的内容选择器

jQuery 遍历 – 过滤

jQuery常见的50种用法

任何 jquery 1.3 兼容插件,使用用户文本输入过滤下拉列表,并根据匹配的输入字符串数进行分组