按单元格中的名称对表进行排序

时间:2013-06-11 17:45:53

标签: jquery html-table

我有一个用文件夹组织的表。我添加了一个上下文菜单,他们可以将一行移动到另一个文件夹。我有代码正常工作以正确更改所选行的单元格,但现在需要求助我的表,以便行显示在新文件夹中。

var sort = $("#hiddenresult tr.events").sort(function (a, b) {
     return ($(a).text().toLowerCase() == $(b).text().toLowerCase()) ? 0 :     ($(a).text().toLowerCase() < $(b).text().toLowerCase() ? -1 : 1);
                                        });
$('#hiddenresult').html(sort);

我有上面的代码,它按第一个单元格对表格进行排序。有没有办法让它按类选择单元格进行排序?我试过$(a).find('td.folderName') ...但是在这里阅读发现很慢,我没有得到它的错误,但表没有排序。该行显示在上一个位置的表中,带有新文件夹名称。我试过$(a 'td.folderName'),但编译器不喜欢那段代码。

http://jsfiddle.net/qDZXh显示的是一个简单的表格,用于显示我要查找的内容,尝试排序第3列(文件夹名称)

1 个答案:

答案 0 :(得分:1)

排序本身并不像浏览器每次发生变化时重新渲染表一样慢。我建议将表格拉出DOM,对其进行排序,然后将其放回原位,以便浏览器只渲染一次。

var trs = $('#hiddenresult tbody tr.events').detach();
trs.sort(function(a, b) {
     var atxt = $(a).find('td.folderName').text().toLowerCase();
     var btxt = $(b).find('td.folderName').text().toLowerCase();
     return (atxt >= btxt) - (atxt <= btxt);
});
$('#hiddenresult tbody').append(trs);

小提琴:http://jsfiddle.net/qDZXh/2/

编辑:在表格排序时,分离和追加会使表格闪烁或消失。或者,您可以使用.clone(true)复制tbody及其所有事件等,然后在末尾使用.replaceWith将它们交换出来。

相关问题