我有一个大约 200 个项目的列表(在表格行中):
<tr><td><h5>Title</h5></td>
<td class="nazwa">some text</td>
<td>Some additional stuff</td>
</tr>
我创建了一个 jQuery 函数,如果它们与搜索的字符串匹配,它会过滤(显示或隐藏)项目
jQuery.fn.filterItems = function(str){
var title = jQuery(this).find("h5").text().toLowerCase();
var name = jQuery(this).find(".nazwa").text().toLowerCase();
if( title.search( str ) < 0 && name.search( str ) < 0 ){
jQuery(this).hide().removeClass("visible");
}
else{
jQuery(this).show().addClass("visible");
}
return this;
}
每次用户在搜索输入中输入内容时,它都会自动过滤项目并显示与输入匹配的项目:
jQuery("#search_items").on("input", function(){
var s = jQuery(this).val();
if(s != ""){
jQuery('.list-of-items tr').each(function(){
jQuery(this).filterItems( s.toLowerCase() );
});
}
else{
jQuery('.list-of-items tr').show().addClass("visible");
}
});
这在 PC 上运行良好,但在移动设备上存在一些性能问题。有时输入和过滤器反应之间有相当长的延迟。
如何在性能/资源使用方面优化此实时搜索?