2013-06-11 97 views
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') ......但在這裏找到的速度很慢,我沒有得到一個錯誤,但表沒有排序。該行顯示在上一個位置的表格中,並帶有新的文件夾名稱。我試過$(a 'td.folderName'),但編譯器不喜歡那個代碼。

+0

JSFiddle將不勝感激,以幫助您快速。 –

+0

http://jsfiddle.net/qDZXh/這裏是簡單的表格來顯示我在找的東西,試圖在第3列(文件夾名稱)排序 –

回答

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將其交換出去。

+0

基於小提琴編輯! –

+0

清理小提琴! http://jsfiddle.net/qDZXh/2/ –

+0

剛剛看到你的小提琴:) –

相關問題