我正在尝试使用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列)进行排序答案 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版本发布。
$('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
,因此您可以查看控制台并查看这两个功能的区别。