我正在使用一个jquery插件来修复我生成的html表上的标题.不幸的是,插件的性能非常慢,我把它缩小到以下代码:
var $tbl = $(this);
var $tblhfixed = $tbl.find("thead");
$tblhfixed.find("th").each(function ()
$(this).css("width", $(this).width());
});
Run Code Online (Sandbox Code Playgroud)
在一张有2,000行的桌子上花费大约40秒钟.有谁知道为什么它如此缓慢,更重要的是如何让它更快?我已经尝试了很多其他插件,这是唯一一个按照我想要的方式工作的插件.谢谢你的帮助
罪魁祸首可能是.each.
原因是,当您使用.each而不是普通循环进行迭代时,您会为每次迭代调用一个函数。在这种情况下,函数调用会产生相当大的开销,因为必须为每次迭代创建一个新的调用堆栈。
为了让改变更快
$tblhfixed.find("th").each(function ()
$(this).css("width", $(this).width());
});
Run Code Online (Sandbox Code Playgroud)
到
var elms = $tblhfixed.find("th");
for(var i=0, elm;elm = elms[i];i++) {
elm.css("width", elm.width());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2286 次 |
| 最近记录: |