可用于逻辑上(不一定是语义上)可用的唯一元素是将相关的行分组在一起的是
,因为它有效地具有多个元素。但是,由于实现tablesorter的方式,这在这种情况下不会有任何帮助。我可以看到在的tablesorter源代码一个未记录的配置选项 - appender - 这允许指定一个函数,它接受被排序的表,并包含分类的行的数据结构被附加到它达到预期的重新排序,但我看不到任何选项可让您配置在排序时查看哪些行。
如果这个难题的第一部分在那里,您可以使用它来限制考虑排序到真实数据行的行,并使用appender选项提供一个函数,该函数附加每个排序的行和其下一行的兄弟行。
编辑:这里有一个快速和肮脏的执行额外的一块你需要和使用例子:
修改的buildCache方法,从行195起,以jquery.tablesorter.js:
var rowsToSort = table.config.rowsToSort ? table.config.rowsToSort(table) : table.tBodies[0].rows;
var totalRows = rowsToSort.length,
totalCells = (rowsToSort[0] && rowsToSort[0].cells.length) || 0,
parsers = table.config.parsers,
cache = {row: [], normalized: []};
使用这对我来说与样品表的工作原理:
$(document).ready(function() {
$.tablesorter.defaults.debug = true;
// Select every other row as sorting criteria
$.tablesorter.defaults.rowsToSort = function(table)
{
var rows = [];
var allRows = table.tBodies[0].rows;
for (var i = 0, l = allRows.length; i < l; i += 2)
{
rows.push(allRows[i]);
}
return rows;
};
// Append each row and its next sibling row
$.tablesorter.defaults.appender = function (table, rows)
{
for (var i = 0, l = rows.length; i < l; i++)
{
var row = rows[i][0];
var buddyRow = $(row).next("tr").get(0);
table.tBodies[0].appendChild(row);
table.tBodies[0].appendChild(buddyRow);
}
};
$("table").tablesorter();
});