1

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

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')......但在这里阅读 find 很慢,我没有收到错误,但表格没有排序。该行以新文件夹名称显示在先前位置的表格中。我试过$(a 'td.folderName')了,但编译器不喜欢那个代码。

http://jsfiddle.net/qDZXh显示了一个简单的表格来显示我正在寻找的内容,试图在第 3 列(文件夹名称)进行排序

4

1 回答 1

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在最后使用将它们换出。

于 2013-06-11T17:56:37.127 回答