Jquery tablesorter td colspan在车身内
我正在尝试使用tablesorter插件对我的表进行排序,其中最后一个单元格跨越多个列 在生成列中,有一个内部表,其中包含多个单元格和隐藏行。当排序表头1对列1的响应、表头2对列2的响应和表头3对跨越列的响应时,textExtraction对跨越列进行排序。但是有更多的表头,它们应该在内部表上排序,而不是在下一列上排序 我在这里举了一个小例子: 为了简化它,这就是我试图(从小提琴中)得到的: “名称”标题对名称列(第0列)进行排序Jquery tablesorter td colspan在车身内,jquery,sorting,nested,html-table,tablesorter,Jquery,Sorting,Nested,Html Table,Tablesorter,我正在尝试使用tablesorter插件对我的表进行排序,其中最后一个单元格跨越多个列 在生成列中,有一个内部表,其中包含多个单元格和隐藏行。当排序表头1对列1的响应、表头2对列2的响应和表头3对跨越列的响应时,textExtraction对跨越列进行排序。但是有更多的表头,它们应该在内部表上排序,而不是在下一列上排序 我在这里举了一个小例子: 为了简化它,这就是我试图(从小提琴中)得到的: “名称”标题对名称列(第0列)进行排序 “Phone”标题通过查看cell1类第一次出现的值对跨越列(第
“Phone”标题通过查看cell1类第一次出现的值对跨越列(第1列)进行排序
“Type”-标题通过查看第一次出现的cell2类的值对跨越列(第1列)进行排序表叉排序器已更新为使用
textextextraction
函数(如果设置),而不是在duplicateSpan
选项设置为false
()-但此更改目前仅在存储库的主分支中可用,并将与版本2.25.8一起发布
因此,您可以(,使用):
注意:此方法使用textextextraction
函数从第一个单元格1或单元格2获取数据,因此带有“home”的单元格忽略“club”和“office”内容。如果要包括该函数,请按如下所示修改该函数():
注2:演示中的
debug
选项为true
,因此您可以查看控制台并查看这两个功能的差异。当前,如果在tbody
中遇到colspan
,则tablesorter使用将该单元格的值设置为所有跨区单元格的相同值,或设置为空字符串。我需要更新函数,让它调用textextextraction
函数。嘿,莫蒂,谢谢你的回复,它工作得很好。我尝试向表中添加一个额外的列(不在嵌套的列中),并认为如果将索引从0更改为1,它会起作用,但它只对第一个(ID)和第三个(列)进行排序,请参见。我可以在调试中看到,如果我添加ID列,则类型列不存在。“cell1”和“cell2”类名需要与它们所在的列匹配,因此将这些类分别更改为“cell2”和“cell3”-非常感谢。感谢您为tablesorter插件制作的优秀示例
$('table').tablesorter({
textExtraction: {
1: function(node){ return $(node).find('.cell1').eq(0).text(); },
2: function(node){ return $(node).find('.cell2').eq(0).text(); }
}
});
$('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;
}
});
$('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;
}
});