如何在按键上进行快速搜索过滤?

时间:2014-08-24 12:44:09

标签: javascript jquery regex optimization

我正在尝试在表中添加过滤功能,其中包含大量表数据。差不多800 td

我可以在键入输入时搜索文本但我的逻辑很慢。它不允许我在搜索之前完全写入文本,这种文本在文本输入中存在。

所以我正在寻找帮助以找到此代码中的错误。如何优化这个?任何人都可以帮助我。

这是CODE

jQuery("#sear").keyup(function(){
var searching_val = jQuery(this).val();
var mysearch = new RegExp(searching_val,'gi'); 
jQuery("#container td").each(function(){
if(mysearch.test(jQuery(this).data('samp'))){
    jQuery(this).show();
}else{
    jQuery(this).fadeOut();
}
   });
});

JSFIDDLE

我在小提琴中显示的例子只有两行。在Real中我有更多Rows更多Table Data

当我们有更多td时这是否是常见行为?或者有没有办法优化这个?我也无法避免循环遍历<td> data-samp属性,因为内容格式不同,这些不在示例中。因此,所有这些都存储在表td的数据属性中以检索它以进行输入。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

以下是适合您的代码:

jQuery("#sear").keyup(function(e){
    var searching_val = jQuery(this).val();
    setTimeout(function(){
       if(searching_val != ""){  // If search value is not empty value
          jQuery("#container td").show();
          jQuery("#container td").each(function(){
              if(jQuery(this).text().indexOf(searching_val) < 0){
                  jQuery(this).hide();
              }
          });
       }else{
          jQuery("#container td").show();  // Show all td's
       }
    }, 2000);
});

就是这样。