我正在使用一个jquery插件,该插件可修复我生成的html表上的 header 。不幸的是,该插件的性能非常慢,我将其范围缩小为以下代码:

var $tbl = $(this);
var $tblhfixed = $tbl.find("thead");
$tblhfixed.find("th").each(function ()
    $(this).css("width", $(this).width());
});

在具有2,000行(即)的表上,这大约需要40秒。有谁知道为什么它这么慢,更重要的是我怎样才能使它更快?我尝试了许多其他插件,这是我想要的唯一起作用的插件。谢谢你的帮助

最佳答案

罪魁祸首可能是.each

原因是,当您使用.each而不是常规循环进行迭代时,您会为每次迭代调用一个函数。在这种情况下,函数调用会产生相当大的开销,因为必须为每次迭代创建一个新的调用堆栈。

为了更快地进行更改

$tblhfixed.find("th").each(function ()
    $(this).css("width", $(this).width());
});


var elms = $tblhfixed.find("th");
for(var i=0, elm;elm = elms[i];i++) {
    elm.css("width", elm.width());
}

关于javascript - 为什么这个jQuery这么慢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5179901/

10-11 12:48
查看更多