我试图制作一个小部件,它可以在一个表内单独排序一组行,同时使行组坚持“分组行”.我无法弄清楚如何解决这个问题……
编辑:我想排序非colspan列.每个组都应该表现为子表
在jsfiddle中的基本设置,任何人都可以推动我朝着正确的方向前进吗?
编辑:新jsfiddle http://jsfiddle.net/L8bwW/28/
最佳答案
这是一个不使用tablesorter的Working example.
关键是使用tbody元素对行进行分组.然后在每个tbody中排序除最后一行之外的所有行.
该表可能如下所示:
它的排序可能如下所示:
function SortIt() {
jQuery('table.sortable > tbody.sortable').each(function(index,tbody) {
var $rowGroup = jQuery(tbody);
// select all but the last row in the tbody
var rows = $rowGroup.find('tr:not(last-child)').get();
var sortDirection = $rowGroup.is('.sorted-asc') ? -1 : 1;
// Set a custom property on each row - 'sortKey',the key to sort.
// This example uses the text in the first column. It could use
// any column,or any content in the row.
jQuery.each(rows,function(index,row) {
row.sortKey = jQuery(row).children('td').first().text();
});
// actually sort the rows
rows.sort(function(a,b) {
if (a.sortKey < b.sortKey) return -sortDirection;
if (a.sortKey > b.sortKey) return sortDirection;
return 0;
});
// retain the summary row - the last one
var summaryRow = $rowGroup.find("tr:last-child");
// remove all the rows from the tbody
$rowGroup.find("tr").remove();
// append the rows in sorted order
jQuery.each(rows,row) {
$rowGroup.append(row);
row.sortKey = null;
});
// append the final row
$rowGroup.append(summaryRow);
if (sortDirection == 1) { $rowGroup.addClass('sorted-asc'); }
else {$rowGroup.removeClass('sorted-asc'); }
});
}
猜你在找的jQuery相关文章