@lDaHteSSl
html coder

Как реализовать алгоритм показа страниц пагинации jQuery?

Добрый день!
Есть функция пагинации:
function Pagination() {
        var rowsShown = $('.quantity__link_active').data('value');
        if(rowsShown === 'all') {
            $('.table__row').show();
            $('.pageList__link').remove();
        } else {
            var rowsTotal = $('.table__row').length;
            var numPages = rowsTotal/rowsShown;
            $('.pageList__link').remove();

            for(var i = 0; i < numPages; i++) {
                var pageNum = i + 1;
                $('.pageList').append('<a href="#" rel="'+ i +'" class="pageList__link">'+ pageNum +'</a> ');
            }
            $('.pageList__link:first').addClass('pageList__link_active');
            $('.table__row').hide()
            for(var i = 0; i <= rowsShown - 1; i++) {
                $($('.table__row')[i]).show();
            }
            $('.pageList__link').on('click', function(){
                $('.pageList__link').removeClass('pageList__link_active');
                $(this).addClass('pageList__link_active');
                $('.table__row').hide()
                
                var currPage = $(this).attr('rel');
                var startItem = currPage * rowsShown;
                var endItem = startItem + rowsShown - 1;
                for(var i = startItem; i < endItem; i++) {
                    $($('.table__row')[i]).show();
                }
                return false;
            });
        }
    };

При небольшом количестве страниц всё работает изумительно, но когда страниц становится больше (6-15) выглядит плохо.
Необходимо реализовать замену страниц троеточием, если страниц больше 5. Например:
1, 2, 3, 4, 5...20
1...4,5,6,7, 8...20
Подозреваю, что нужно использовать for и if else, чтобы достигнуть данного результата, но никак не могу сообразить, как именно их использовать в данной ситуации.
Подскажите пожалуйста, как это реализовать, если можно, опишите алгоритм сокращения.
Без готовых решений и плагинов.

UPD: Думаю, что нужно использовать метод slice().
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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