【发布时间】:2011-11-25 08:52:16
【问题描述】:
我有一个从FullCalendar 动态填充的表。
问题是FullCalendar 不关心它的原始顺序。
表格如下所示:
<table id="caltbl">
<thead>
<tr> <th> </th> <th> Date </th> <th> hours </th> ... </tr>
</thead>
<tbody>
<tr> <td class="sortnr">1</td> <td></td> ... </tr>
<tr> <td class="sortnr">3</td> <td></td> ... </tr>
<tr> <td class="sortnr">2</td> <td></td> ... </tr>
<tr> <td class="sortnr">4</td> <td></td> ... </tr>
</tbody>
</table>
每一行的第一行包含表格应该排序的数字。
我有这个代码来排序:
var rows = $('#caltbl > tbody').children('tr').detach();
for (var counter = 1; counter<=rows.length; counter++) {
$(rows).each(function(index) {
if ($(this).find(".sortnr").text()==counter){
$('#caltbl > tbody:last').append($(this));
}
});
}
这在 Firefox 中运行良好,但在 Internet Explorer 中让我非常头疼,因为有 500 多个项目并且它挂起。我可以添加一个setTimeout,但这并不能解决真正的问题。 排序很慢。有什么更快的排序方法?
不必从<table> html 开始,正如我所说,它是动态填充的,所以我有一个包含 html 的Array。每个<tr> 1 个项目(未排序)
【问题讨论】:
-
在 IE 7(以及更低版本,我猜)中,任何涉及将元素添加到 DOM 的操作都非常慢……这就是问题所在。如何解决它......我不太确定。一种解决方案是在服务器端进行...我意识到 jQuery 自动完成的迟缓,并且有一些关于它的问题,例如:stackoverflow.com/questions/5073612/…
-
向 DOM 添加东西不是问题。它运行速度极快,而且比 IE7 还要高。问题确实是排序。
-
谷歌搜索“javascript sort”可以得到一些结果。
标签: javascript jquery performance sorting html-table