Заказ ячейке строки и столбцы


Как я могу сделать такого рода быстрее и лучше?

function OrderBy(a,b) {
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
}

SortBy = function($th) {
    var $tbody = $th.closest('tbody');
    var $table = $tbody.parent();
    $tbody.detach();
    $('#Processing').show('fast',function () {
        var column = $th.index();
        var rows = $tbody.find('tr').get();
        rows.sort(function(rowA,rowB) {
            var keyA = $(rowA).children('td').eq(column).text();
            var keyB = $(rowB).children('td').eq(column).text();
            return OrderBy(keyA,keyB);
        });
        $.each(rows, function(index,row) {
            $tbody.append(row);
        });
        $table.append($tbody);
    });
};


585
2
задан 20 апреля 2011 в 06:04 Источник Поделиться
Комментарии
1 ответ

Вы можете прочитать ячейку текст до сортировки, так что это не должно было случиться неоднократно в порядок функции:

    var rowsWithText = $tbody.find('tr').map(function() {
return {
row: this,
text: $(this).children('td').eq(column).text()
};
});
rowsWithText.sort(function(rowA, rowB) {
return OrderBy(rowA.text, rowB.text);
});
$.each(rowsWithText, function(index,row) {
$tbody.append(row.row);
});

2
ответ дан 21 апреля 2011 в 12:04 Источник Поделиться