JQuery обратная сортировка - PullRequest
1 голос
/ 19 марта 2011

У меня есть этот код:

 $(document).ready(function() {
        ofertas_sort = function(sort_key) {
            // array of offer divs
            var ofertas = $('.infoferta');

            // the div classname corresponding to the key by which
            // we are sorting
            var sort_key_sel = 'div.' + sort_key;

            // in large lists it'd be more efficient to calculate
            // this data pre-sort, but for this instance it's fine
            ofertas.sort(function(a, b) {
                return parseInt($(sort_key_sel, a).attr('data-value')) -
                    parseInt($(sort_key_sel, b).attr('data-value'));
            });

            // re-fill the container with the newly-sorted divs
            $('#ofertas_container').empty().append(ofertas);
        };

        $('a').click(function() {
            ofertas_sort($(this).attr('data-key'));
        });
    });

Мне нужно сделать наоборот ... но когда я ставлю такие строки:

 ofertas.reverse(function(i, e) {
            alert(i);
            alert(e);
        });

, это показывает это сообщение

Uncaught TypeError: Object [object Object] has no method 'reverse'

Ответы [ 2 ]

1 голос
/ 19 марта 2011

ofertas - это объект jQuery, однако вы можете преобразовать его в массив с помощью метода toArray () . Оттуда вы можете вызывать функции массива, такие как reverse.

1 голос
/ 19 марта 2011

ofertas не является массивом - это объект jQuery - и отсутствует такой метод, называемый reverse (см. jQuery API ).Аналогичным образом, я удивлен, что опубликованный пример кода работает, потому что sort вызывается на ofertas.

. Для "обратной сортировки" просто умножьте результат компаратора (функция сортировки) на -1 * 1010.* или инвертирует операнды операции вычитания (что фактически является тем же самым).

Счастливое кодирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...