0
我使用這個jQuery的代碼添加排序(一列基於價值觀切換順序)功能表:如何在單元格包含嵌套表格時對錶格行進行排序?
$('th.sortBy').click(function(){
var table = $(this).parents('table').eq(0);
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
this.asc = !this.asc;
if (!this.asc){rows = rows.reverse()};
for (var i = 0; i < rows.length; i++){table.append(rows[i])};
});
function comparer(index) {
return function(a, b) {
var valA = getCellValue(a, index), valB = getCellValue(b, index);
return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB);
};
};
function getCellValue(row, index){ return $(row).children('td').eq(index).html(); };
然而,在一個表,其中細胞包含另一個表,分類符 - 它需要所有包括嵌套的表格行都重新排列。當然,我需要嵌套行保留在表格中,而不是在另一個不相關的層次上排序。
我應該怎麼做才能解決這個問題?
我試圖改變
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
到
var rows = table.children('tr:gt(0)').toArray().sort(comparer($(this).index()));
,但它仍然選擇和訂單的所有行,包括嵌套的人的。
謝謝!是的,它確實有幫助。我還發現'table.find('tr:gt(0):first')。parent()。children()'起作用,但如果標題行在'tbody'中,它將會出錯。 –