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);
}
};