我正在使用一个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/