Đây là một Working example mà không sử dụng tablesorter.
Điều quan trọng là sử dụng phần tử tbody
để nhóm các hàng của bạn. Sau đó, sắp xếp tất cả các hàng nhưng cuối cùng, trong mỗi tbody.
Bảng có thể trông như thế này:
<table class="sortable">
<thead>
<tr> <th></th> <th>A-head</th> <th>B-head</th> <th>C-head</th> </tr>
</thead>
<tfoot>
<tr> <td></td> <td>A-foot</td> <td>B-foot</td> <td>C-foot</td></tr>
</tfoot>
<tbody class='sortable'>
<tr> <td>DDD</td><td> r1c1</td> <td>r1c2</td> <td>r1c3</td> </tr>
<tr> <td>AAA</td><td> r2c1</td> <td>r2c2</td> <td>r2c3</td> </tr>
<tr> <td>CCC</td><td> r3c1</td> <td>r3c2</td> <td>r3c3</td> </tr>
<tr> <td>BBB</td><td> r4c1</td> <td>r4c2</td> <td>r4c3</td> </tr>
<tr> <td colspan="4">summary info for the first group of rows</td> </tr>
</tbody>
<tbody class='sortable'>
<tr> <td>Zorro</td><td> r5c1</td> <td>r5c2</td> <td>r5c3</td> </tr>
<tr> <td>Caleb</td><td> r6c1</td> <td>r6c2</td> <td>r6c3</td> </tr>
<tr> <td>Momo</td><td> r7c1</td> <td>r7c2</td> <td>r7c3</td> </tr>
<tr> <td>Wolfie</td><td> r8c1</td> <td>r8c2</td> <td>r8c3</td> </tr>
<tr> <td colspan="4">summary info for rowgroup #2</td> </tr>
</tbody>
...
Và một loại fn cho nó có thể trông như thế này:
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, function(index, 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'); }
});
}
Làm thế nào để bạn muốn làm sắp xếp của bạn? Bạn có muốn nó sắp xếp trên các hàng rộng không, sau đó trên các hàng được phân tách, như sắp xếp Finder/Explorer theo thứ tự bảng chữ cái trên các thư mục và sau đó trên các thư mục con? – Blazemonger
xin lỗi vì không rõ ràng, tôi muốn sắp xếp trên các cột không phải là colspan. mỗi nhóm sẽ hoạt động như một bảng phụ – anderssonola
Vì vậy, các hàng rộng (colspan) được gắn liền với hàng đơn bên dưới chúng? Hoặc là chúng "cố định tại chỗ" và, ví dụ, xuất hiện như hàng thứ ba và thứ sáu bất kể cách những người khác được sắp xếp? – Blazemonger