Как устранить дублирование рядов при сортировке таблицы?

При клике на кнопки сортировки таблицы ряды в таблице дублируются, то есть если было 2 ряда после клика становится 4. как изменить функцию? вот сама функция сортировки.

function sortTable(f,n) {
    var rows = $('#table-favorites tbody tr').get();

    rows.sort(function(a, b) {
        var A = getVal(a);
        var B = getVal(b);

        if (A < B) {
            return -1*f;
        }
        if (A > B) {
            return 1*f;
        }
        return 0;
    });

    function getVal(elm) {
        var v = $(elm).children('td').eq(n).text().toUpperCase();
        if ($.isNumeric(v)) {
            v = parseInt(v,10);
        }
        return v;
    }

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

var sortTime = 1,
    sortCity = 1,
    sortDiff = 1;

$("#sort_time").on('click', function() {
    sortTime *= -1;
    var n = $(this).prevAll().length;
    sortTable(sortTime,n);
});

$("#sort_diff").on('click', function() {
    sortDiff *= -1;
    var n = $(this).prevAll().length;
    sortTable(sortDiff,n);
});

$("#sort_city").on('click', function() {
    sortCity *= -1;
    var n = $(this).prevAll().length;
    sortTable(sortCity,n);
});

Заранее спасибо!
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@UnformedVoid
Разработчик ПО
Вот этот участок добавляет ряды в отсортированном порядке:
$.each(rows, function(index, row) {
    $('#table-favorites').children('tbody').append(row);
});

но в коде нет участка, который удалял бы ряды, вот и происходит дублирование. Сделайте так, чтоб ваша функция подчищала таблицу прежде, чем добавлять отсортированные ряды.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы