Задать вопрос

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

При клике на кнопки сортировки таблицы ряды в таблице дублируются, то есть если было 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);
});

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

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

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

Похожие вопросы