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.children('tr:gt(0)').toArray().sort(comparer($(this).index()));
に
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
を変更しようとしましたが、それはまだ、ネストされたものを含む行のすべてを選択し、注文します。
ありがとうございました!はい、それは助けになります。私はまた、 'table.find( 'tr:gt(0):first')。parent()。children()'が動作するが、ヘッダー行が 'tbody'にあると間違って動作することを発見した。 –