tableorter td-colspan in tbody

时间:2016-04-06 11:24:51

标签: jquery sorting nested html-table tablesorter

我正在尝试使用tablesorter-plugin对我的表进行排序,其中包含最后一个单元格跨越多列的行。

在生成列中,有一个内部表,它包含多个单元格和隐藏的行。当排序表标题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(); }
    }
});

为简化起见,这就是我试图获取的内容(来自小提琴):

"名称" -header对名称列(第0列)进行排序 " Phone" -header通过查看cell1-class第一次出现的值来对跨栏(第1列)进行排序 " Type" -header通过查看第一个出现的cell2-class

的值来对生成列(第1列)进行排序

1 个答案:

答案 0 :(得分:0)

如果设置textExtraction选项设置为duplicateSpan {false $('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; } }); 选项而不是将单元格值设置为空字符串,那么tableorter的fork已更新为使用textExtraction函数3}}) - 但此更改目前仅在存储库的主分支中可用,并设置为使用2.25.8版本发布。

因此,您可以执行此操作(docs,使用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;
  }
});

注意:此方法使用debug函数从第一个cell1或cell2中获取数据,因此带有“home”的单元格忽略“club”和“office”内容。如果要包含它,则按如下方式修改函数(this file):

true

注2:演示中的{ name: "SweetTown" }选项为Bob,因此您可以查看控制台并查看这两个功能的区别。