티스토리 뷰

공부

[JS] sort by th in load data

승가비 2024. 10. 7. 12:28
728x90
function sortTable(table, index, asc) {
    var rows = table.find('tbody tr').get();

    rows.sort(function (a, b) {
        var cellA = $(a).children('td').eq(index).text().trim();
        var cellB = $(b).children('td').eq(index).text().trim();

        if ($.isNumeric(cellA) && $.isNumeric(cellB)) {
            return asc ? cellB - cellA : cellA - cellB;
        } else {
            return asc ? cellB.localeCompare(cellA) : cellA.localeCompare(cellB);
        }
    });

    $.each(rows, function (index, row) {
        table.children('tbody').append(row);
    });
}

$(document).ready(function () {
    $('th').click(function () {
        var index = $(this).index();
        var table = $(this).closest('table');
        var asc = $(this).hasClass('sorted-asc');

        sortTable(table, index, asc);

        table.find('th').removeClass('sorted-asc sorted-desc');
        $(this).toggleClass('sorted-asc', !asc).toggleClass('sorted-desc', asc);
    });
728x90
댓글