jQuery の hide() および show() を使用した選択に基づいて、テーブル内の tr を一般的に切り替える方法を理解しています。これは、数百行で非常に効果的に機能していました。今、DOM の 5000 以上のエントリで動作する必要があります。そして、ブラウザが完全にフリーズします。
私の検索では、こちらの learningjquery.com にたどり着きました。
その中で説明されている「スタイルシートの有効化/無効化」方法があり、魅力のように機能するはずです。そして、それはIE9でのみ魅力のように機能し、行をフィルタリングするのに1秒しかかからないことを除いてそうです。Chrome では、同じアクションに 15 ~ 20 秒以上かかります。
私の問題は、このアプリケーションが構築されている人々によって Chrome がかなり広く使用されていることです。このソリューションを Chrome で機能させる方法を誰かに提案してもらえますか、またはこのシナリオを処理する他の方法を提案してもらえますか。
- .css('display', 'none')、.addClass() および .removeClass() などの他のオプションを試しました。何も高速化していないようです。
- 私はデータテーブルを試しましたが、その後は非常に高速ですが、最初にこの量のデータをロードするのに永遠にかかります.
更新: @jfriend00 と @Ohgodwhy に感謝します。これが、すべてのブラウザーで機能する最終的なコードです。
$('#tbl_product_details tbody tr').each( function() {
var row = $(this);
row.hasClass("tr_"+cust_id) ? row.removeClass("hide") : row.addClass("hide");
});
ただし、受け入れられた回答が示すように、プレーンな js とページの読み込み時に dom 要素を取得することでさらに改善できますが、それを行う必要はありませんでした。コードはすでに十分に高速であり、jQuery コードをあちこちに配置したいと考えています。