números de página cambiando Javascript paginación muestran

votos
16

Tengo un script de paginación para una tabla que genera números de página basado en cuántos elementos hay en el interior del problema table.The es que muestra todas las páginas, por ejemplo, si hay 50 páginas se podría llenar la página con 50 botones, pero lo haría quieren mostrar sólo los primeros 3-4 botones entonces ... y después de que el último botón de la página. He tratado de modificarlo, pero no estoy seguro de lo que estoy haciendo mal porque no está haciendo nada

$.fn.pageMe = function(opts) {
    var $this = this, defaults = {
        perPage : 7,
        showPrevNext : false,
        hidePageNumbers : false
    }, settings = $.extend(defaults, opts);

    var listElement = $this;
    var perPage = settings.perPage;
    var children = listElement.children();
    var pager = $('.pager');

    if (typeof settings.childSelector != undefined) {
        children = listElement.find(settings.childSelector);
    }

    if (typeof settings.pagerSelector != undefined) {
        pager = $(settings.pagerSelector);
    }

    var numItems = children.length;
    var numPages = Math.ceil(numItems / perPage);

    pager.data(curr, 0);

    if (settings.showPrevNext) {
        $('<li class=page-item><a href=# class=prev_link>«</a></li>')
                .appendTo(pager);
    }

    var curr = 0;
    while (numPages > curr && (settings.hidePageNumbers === false)) {
        $(
                '<li class=page-item><a href=# class=page-link>'
                        + (curr + 1) + '</a></li>').appendTo(pager);
        curr++;
    }

    if (settings.showPrevNext) {
        $('<li class=page-item><a href=# class=next_link>»</a></li>')
                .appendTo(pager);
    }

    pager.find('.page-link:first').addClass('active');
    pager.find('.prev_link').hide();
    if (numPages <= 1) {
        pager.find('.next_link').hide();
    }
    pager.children().eq(1).addClass(active);

    children.hide();
    children.slice(0, perPage).show();

    pager.find('li .page-link').click(function() {
        var clickedPage = $(this).html().valueOf() - 1;
        goTo(clickedPage, perPage);
        return false;
    });
    pager.find('li .prev_link').click(function() {
        previous();
        return false;
    });
    pager.find('li .next_link').click(function() {
        next();
        return false;
    });

    function previous() {
        var goToPage = parseInt(pager.data(curr)) - 1;
        goTo(goToPage);
    }

    function next() {
        goToPage = parseInt(pager.data(curr)) + 1;
        goTo(goToPage);
    }

    function goTo(page) {
        var startAt = page * perPage, endOn = startAt + perPage;

        children.css('display', 'none').slice(startAt, endOn).show();

        if (page >= 1) {
            pager.find('.prev_link').show();
        } else {
            pager.find('.prev_link').hide();
        }

        if (page < (numPages - 1)) {
            pager.find('.next_link').show();
        } else {
            pager.find('.next_link').hide();
        }

        pager.data(curr, page);
        pager.children().removeClass(active);
        pager.children().eq(page + 1).addClass(active);

    }
};
Publicado el 27/09/2018 a las 21:04
por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more