Jquery 基于文本搜索显示div

Jquery 基于文本搜索显示div,jquery,jquery-ui,Jquery,Jquery Ui,我有一个文本输入搜索,应该根据div的标题过滤div。下面是不起作用的代码: $('.contact-name').each(function(){ var txt = $('#search-criteria').val(); $('this').find(txt).show() }); 我做错了什么 编辑: 澄清变量txt是用户在输入字段中键入的内容。例如,如果txt是Cha,我希望此行显示: <div class="contact-name"><h3&

我有一个文本输入搜索,应该根据div的标题过滤div。下面是不起作用的代码:

$('.contact-name').each(function(){
  var txt = $('#search-criteria').val();
  $('this').find(txt).show()      
});
我做错了什么

编辑: 澄清变量txt是用户在输入字段中键入的内容。例如,如果txt是Cha,我希望此行显示:

<div class="contact-name"><h3><a href="##">Charles Smith</a></h3></div>

幸运的是,jQuery有一个选择器:

$('.contact-name').each(function(){
  var txt = $('#search-criteria').val();
  $(this).find('div:contains("'+txt+'")').show()      
});

find
方法将JQuery选择器作为参数。我怀疑您的
search\u标准
文本输入是否包含该内容。假设它将包含DIV标题的一些子字符串,然后尝试以下操作:

var txt = $('#search-criteria').val();    
$('.contact-name').each(function(i, e){
  if($(e).attr("title").indexOf(txt)>=0) $(e).show();
});
试试这个

var txt = $('#search-criteria').val();
$('.contact-name:contains("'+txt+'")').show();

小提琴示例:

更新不区分大小写:

var txt = $('#search-criteria').val();
$('.contact-name').each(function(){
   if($(this).text().toUpperCase().indexOf(txt.toUpperCase()) != -1){
       $(this).show();
   }
});

fiddle示例:

以下内容不区分大小写,仅与div中第一个a href中的文本匹配:

var pattern = "/" + $('#search-criteria').val() + "/i";
$('.contact-name').filter(function() {
    return $(this 'a:first-child').html().match(pattern).length > 0;
}).show();
过滤器为您提供了一个元素列表,这些元素从其中的函数返回true,并将show()应用于其中。
filter函数中的返回可以理解为:“对于该元素中的第一个锚元素,获取内容,将其与模式匹配,如果结果数组包含1个或多个结果,则返回true”


模式末尾的“i”是不区分大小写的匹配。

请参阅上面的“我的补充说明”。我期待着评估div中的文本。这是最有效的,有没有办法使其不区分大小写?并且不搜索隐藏行。更新了不区分大小写的代码。。。你说的隐藏场是什么意思???这是一个输入隐藏类型还是可见性隐藏的div???谢谢我用过这个,类似的,比如更多的例子和效果,只是google
jquery live text search
hope帮助了一些人。