次のjQueryステートメントがループに入っています。1ページに2つのテーブルがあります#MainContent_gvDemographic
。#tblFreez
$("#MainContent_gvDemographic").find(str)
.css("height", $("#tblFreez")
.find(str)
.css("height"))
ループに多くのステップがある場合、完了するまでに非常に長い時間がかかります。この問題を解決するために、2つのループを使用します。1つは$( "#tblFreez")。find(str)の高さを読み取るためのもので、もう1つは高さをに書き込むための$("#MainContent_gvDemographic").find(str)
もので、配列を使用して2つの間で高さデータを伝送します。ループします。今でははるかに速くなります。2つのソリューションのパフォーマンスに大きな違いがある理由を誰かが知っていますか?計算の複雑さは私には同じように見えます。
了解しました。これが2つの完全なバージョンです。オリジナル:
function FixHeight() {
var rowCount = $('#tblFreez tr').length;
for (var i = 0; i < rowCount; i++) {
var str = "";
if ($.browser.msie) {
str = "tr:eq(" + i + ") td";
}
else {
str = "tr:eq(" + i + ")";
}
$("#MainContent_gvDemographic").find(str).css("height", $("#tblFreez").find(str).css("height"));
}
}
新しい:
function FixHeight() {
var rowCount = $('#tblFreez tr').length;
var hei = new Array();
for (var i = 0; i < rowCount; i++) {
var str = "";
if ($.browser.msie) {
str = "tr:eq(" + i + ") td";
}
else {
str = "tr:eq(" + i + ")";
}
hei[i] = $("#tblFreez").find(str).css("height");
}
for (var i = 0; i < rowCount; i++) {
var str = "";
if ($.browser.msie) {
str = "tr:eq(" + i + ") td";
}
else {
str = "tr:eq(" + i + ")";
}
$("#MainContent_gvDemographic").find(str).css("height", hei[i]);
}
}