我在一个循环中有以下 jQuery 语句。#MainContent_gvDemographic
并且#tblFreez
是一页中的两个表。
$("#MainContent_gvDemographic").find(str)
.css("height", $("#tblFreez")
.find(str)
.css("height"))
当循环中有很多步骤时,需要很长时间才能完成。为了解决这个问题,我使用了两个循环,一个用于读取 $("#tblFreez").find(str) 的高度,另一个用于将高度写入$("#MainContent_gvDemographic").find(str)
,并使用一个数组来携带两者之间的高度数据循环。现在变得更快了。有谁知道为什么这两种解决方案在性能上有如此大的差异?计算复杂度在我看来是一样的。
好的,这是两个完整的版本。原来的:
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]);
}
}