2016-04-06 72 views
1

我想用tablesorter-plugin對我的表進行排序,並由最後一個單元跨越多列的行組成。tablesorter td-colspan in tbody

在生成列中,有一個內部表,它包含多個單元格和隱藏行。當對第1列的表頭1響應進行排序時,表頭2對第2列的響應和表頭3響應生成列,textExtraction對生成列進行排序。但是還有更多的表頭,他們應該在內表上排序,而不是在下一列。

我在這裏做一個小例子:http://jsfiddle.net/frankmyhre/aoLgu7f9/

$('table').tablesorter({ 
    textExtraction: { 
     1: function(node){ return $(node).find('.cell1').eq(0).text(); }, 
     2: function(node){ return $(node).find('.cell2').eq(0).text(); } 
    } 
}); 

爲了簡化它,這就是我試圖獲得(來自小提琴):

「名稱」 -eader對名稱列(列0)進行排序
「Phone」-header通過查看cell1級的第一次出現的值來對spanning-column(列1)進行排序
「Type」-header sorts跨欄(第1欄)b ÿ看着CELL2級的第一次出現的值

+0

目前,如果在'tbody'中遇到'colspan',tablesorter使用['duplicateSpan'設置](http://mottie.github.io/tablesorter/docs/#duplicatespan)來設置該單元的值對所有跨網格單元都是一樣的,或者是一個空字符串。我需要更新該函數以使其調用'textExtraction'函數。 – Mottie

回答

0

的tablesorter的叉已更新使用textExtraction功能如果所述小區設置值設置爲當所述duplicateSpan選項設置爲false空字符串代替( docs) - 但此更改當前僅在存儲庫的主分支中提供,並且設置爲與版本2.25.8一起發佈。

所以,你可以做到這一點(demo,使用this file):

$('table').tablesorter({ 
    debug: true, 
    duplicateSpan: false, 
    textExtraction: function(node, table, cellIndex) { 
    if (cellIndex > 0) { 
     // this works because cell1 and cell2 match the table 
     // column zero-based index 
     return $(node).find('.cell' + cellIndex).eq(0).text(); 
    } 
    return node.textContent; 
    } 
}); 

注:此方法使用textExtraction功能從第一小區1或小區2來獲取數據,所以有「家」的細胞無視「俱樂部」和「辦公室」的內容。如果您希望包括再修改函數如下(demo):

$('table').tablesorter({ 
    duplicateSpan: false, 
    textExtraction: function(node, table, cellIndex) { 
    if (cellIndex > 0) { 
     // this works because cell1 and cell2 match the table 
     // column zero-based index 
     var txt = ''; 
     $(node).find('.cell' + cellIndex).each(function(){ 
     txt += this.textContent + ' '; 
     }); 
     return txt; 
    } 
    return node.textContent; 
    } 
}); 

注2:debug選項在演示true所以你可以看一下控制檯,看到這兩個函數的區別。

+0

嘿mottie,謝謝你的回覆,它工作完美。我嘗試在表中添加一個額外的列(不是嵌套的),並且認爲如果我將索引從0更改爲1,但它只在第一個(ID)和第三個(列)上進行排序,請參見http:/ /jsfiddle.net/frankmyhre/aoLgu7f9/。我可以在調試中看到,如果我添加ID列,那麼類型列不存在。 – frankmyhre

+0

「cell1」和「cell2」類名需要匹配它們所在的列,因此將這些類分別更改爲「cell2」和「cell3」 - [demo](http://jsfiddle.net/Mottie/aoLgu7f9/ 23 /)。 – Mottie

+0

非常棒的Mottie,謝謝。並感謝您爲tablesorter插件所做的出色例子 – frankmyhre