【发布时间】:2013-04-09 06:32:14
【问题描述】:
我最终将此问题报告为错误。似乎会影响 webkit 浏览器。 https://code.google.com/p/chromium/issues/detail?id=233677
下面的原始问题。
我正在使用带有 Christian Bach 的 tablesorter 2 插件的 jQuery 1.8.1 并遇到了一个特殊的问题。 (jQuery 1.7.1 和 tablesorter 1 也有同样的问题。)
我有一个包含数百行的表格,它在大约 1 秒内排序。
当我将表格包装在 HTML <form> 元素中时,tablesorter 插件变得非常慢。大约 500 行的表格需要 8 秒以上的时间进行排序。
我只调用 $("#table").tablesorter() 没有额外的参数,只是纯 HTML 没有其他 JavaScript 或 CSS。
此表的 HTML 约为 1.2mb,每个 <td> 都包含其他 HTML 元素,例如 <button>、<div>、<span>、<a>、...
您知道<form> 元素可能会干扰什么吗?谢谢,/w
编辑:这是一个只有 10 行的示例。将实际时间缩放到 500,并将表格包裹在 <form></form> 中,看看这如何减慢排序速度。 http://pastebin.com/95KAAb88
【问题讨论】:
-
试试其他插件,tablesorter 最后一次更新是在 2008 年,是为 jQuery 1.2 编写的。例如。 github.com/padolsey/jQuery-Plugins/blob/master/sortElements/… 或 datatables.net。此外,在jsfiddle.net 上制作您的问题的工作演示,而不是在 pastebin 上制作一个有问题的 php 文件也是一个明智的主意。
-
我正准备说我已经将问题追溯到
tableBody[0].appendChild(r[pos][j]);线上的函数appendToTable(table, cache)。 @dtech,这是一个有效的 HTML 文档,而不是 PHP(您只需要下载 jQuery 和 tablesorter 并引用它们。)我没有 tablesorter 的 CDN,所以我没有使用 jsfiddle.net。我也不想发布完整的 HTML 页面;它非常难看并且> 1mb的文本。我查看了其他表格排序器,但这是项目选择和定制的(不影响性能)。我无权改变事情。 -
@dtech,我在这张桌子上尝试了 datatables.net,效果很好。如果可能,我将建议我们使用它。感谢您的推荐。我仍然对
<form>完全搞砸了 tablesorter 感到好奇,但我只是将这个问题标记为已解决。 -
我在使用 JQuery Mobile 时遇到了类似的问题。表格创建速度很快,直到我将它包装在一个表格中。我的解决方案是在表格构建后简单地将表格包装在表格中。
标签: javascript jquery html-table tablesorter