在我编写的一个使用大型 HTML 数字表的应用程序中,设计要求将突出显示悬停单元格的行和列。
我使用 jQuery 1.3.x 为这个项目开发了所有的 JS,我发现tableHover插件正是我需要的。
但:
在 IE6 上,随着单元格元素的数量上升到页面几乎没有响应的程度,该插件的性能下降。
我认为问题出在插件上,实际上我从头开始重写了它的整个功能,只是为了发现我有同样的性能问题。
调试代码后,我现在知道在 IE6 上选择大量元素并应用className ( jQuery.addClass() ) 非常慢。
我尝试使用jQuery.css()而不是仅使用background-color,性能更好,但同样,当表格单元格数量上升时,性能下降到不可用状态,并且在所有其他浏览器上jQuery.css的性能()比jQuery.addClass()慢得多。
这里的主要问题是表列没有共同的父级,因此为了设置列的样式,需要遍历整个表,选择每一行,然后找到正确的nth-child td。我的 jQuery 代码如下所示:
//col_num is the current td element
//table is the parent table
var col_num = cur_cell.prevAll().length + 1;
var this_col = $('tr td:nth-child(' + col_num + ')', table);
我不会在这里粘贴我的整个代码,因为它与问题无关。我正在寻找的唯一答案是:是否有一种已知的方法可以在更好的性能范围内做我需要的事情?我不是在寻找“Chrome”的性能速度,只是比“无响应”更快。
纳克斯
汤姆。