2011-04-04 18 views
1

hereを実装したJQueryベースの検索の速度を向上させたい。この検索は、以下の仕様を持つクライアントマシンでは非常に遅くなります。 Intel Dual Core Processor 2.0 GHz2 GB RAM。親切に私は、検索の速度を向上させるために何ができるかを教えてjqueryベースの検索の速度を向上させる

function applyFilter(evt) { 
    if (!evt) evt = e.which; 

    if (evt.keyCode == 13) 
     return false; 

    $('table#tblTestRequest tr').css('display', 'none'); 
    $('table#tblTestRequest tr:first').css('display', ''); 
    var tbFilterVal = $('#txtFilter').val().toLowerCase(); 
    filter($('table#tblTestRequest tr:has(span)'), tbFilterVal); 
    $('#txtFilter').focus(); 
    evt.cancelBubble = true; 
} 

function filter(selector, query) { 
    query = $.trim(query); //trim white space 
    query = query.replace(/ /gi, '|'); //add OR for regex query 

    $(selector).each(function() { 
     ($(this).text().search(new RegExp(query, "i")) < 0) ? $(this).css('display', 'none') : $(this).css('display', ''); 
    }); 
} 

検索コードはこれです。ユーザーは通常、1つのキーを押してから、数秒待ってレコードをフィルタリングする必要があります。

答えて

1

オブジェクトごとにRegExpオブジェクトを作成する必要はありません。クエリ用のRegExpオブジェクトを作成し、各オブジェクトのテキストにtestメソッドを使用するだけです。これにより、0との比較が不要になります。これらの最適化で十分かどうかわかりませんが、役立つはずです。

$(selector).each(function() { 
     ($(this).text().search(new RegExp(query, "i")) < 0) ? $(this).css('display', 'none') : $(this).css('display', ''); 
    }); 

var pat = new RegExp(query, "i"); 
$(selector).each(function() { 
     (pat.test($(this).text()) ? $(this).css('display', '') : $(this).css('display','none'); 
    }); 

とこれらの行は未テストなので、私はミスをしなかった場合は、次のとおりです。あなたが行を置き換える基本的に

、。

+0

入力いただきありがとうございました。パフォーマンスにどのような影響があるかを確認する必要がありますか? –

+0

答えとしてマークすると、これよりも優れた解決策を思いつくことができませんでした... –

関連する問題