我有一个用文件夹组织的表。我添加了一个上下文菜单,他们可以将一行移动到另一个文件夹。我有代码正常工作以正确更改所选行的单元格,但现在需要求助我的表,以便行显示在新文件夹中。
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列(文件夹名称)
答案 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
将它们交换出来。