約 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 では問題なく動作しますが、モバイル デバイスではパフォーマンスの問題がいくつかあります。入力とフィルターの反応の間にかなりの遅延がある場合があります。
リソースのパフォーマンス/使用に関して、このライブ検索を最適化するにはどうすればよいですか?