-1

jQuery と JavaScript のパフォーマンスについて 1 つ質問があります。私のアプリケーションは複数のタブを持つレイアウトを使用しており、それらを切り替えるために、次のコードを書きました:

function openTab(id, holder) {
   $("#" + holder).children(".tab").addClass("visHidden");
    $("#" + id).removeClass("visHidden");
   $("#"+holder+" .tab-nav").removeClass("tab_navAkt");
   if (/^\d*$/.test(id)) {                                 
      $("#"+holder+" ." + id).addClass("tab_navAkt");
   }
}

これを行います:visibility:hiddenすべてのタブにクラスを追加し、表示したいタブからこのクラスを削除し、必要に応じてタブコントロール要素をアクティブに設定します。私の質問は、このコードが Firefox または Chrome で約 3 ミリ秒、Internet Explorer 7 および 8 で約 500 ミリ秒かかる可能性があるのはどうしてですか? タブの平均データ サイズは 500kb で、それほど多くはないと思います。私は何か間違ったことをしていますか?

4

2 に答える 2

1

IE は一般的に、JavaScript の実行において FF や Chrome に比べて低速です。ただし、コードを最適化し、IE でパフォーマンスを試すことはできます。これを試して。

function openTab(id, holder) {
   var $holder = $("#" + holder);
   $holder.children(".tab").addClass("visHidden");
   $("#" + id).removeClass("visHidden");
   $holder.find(".tab-nav").removeClass("tab_navAkt");
   //you can get rid of this check. jQuery will addClass only if it finds the element
   //if (/^\d*$/.test(id)) {                                 
      $holder.find(" ." + id).addClass("tab_navAkt");
   //}
}
于 2012-04-24T18:01:03.157 に答える
0

私の推測では、問題の原因は正規表現です。.show()また、 と を使用してそれを書き換えることもできます.hide()

   $("#" + holder).children(".tab").hide();
   $("#" + id).show().addClass("tab_navAct");
于 2012-04-24T17:59:30.273 に答える