Paginación con JQuery

por

Hoy vamos a ver como podemos hacer una páginación con la ayuda de javascript y JQuery.

Las paginaciones se utilizan para mejorar la usabilidad y el rendimiento de una página. Su uso es habitual en foros donde se hace necesario la paginación de los post debido a su gran número. Si no hubiera paginación el tiempo de carga sería altísimo y descendería notablemente el rendimiento del portal.

Para implementar nuestra páginación será necesario tener incluido en nuestro proyecto la librería de JQuery.

Vamos a ver un ejemplo muy sencillo de implementación del script en una página HTML acompañada de AJAX para recargar el contenido correspondiente a la página seleccionada sin recargas.

Utilizaremos el siguiente código HTML:


<head>

	<script src="jquery.js" type="text/javascript"></script>
	<script src="misfunciones.js" type="text/javascript"></script>

</head>

<body>
	<select>
		<option>VALOR1</option>
		<option>VALOR2</option>
		<option>VALOR3</option>
		<option>VALOR4</option>
		<option>VALOR5</option>
	</select>

	<ul class="paginacion"></ul>

</body>

Como podemos ver en el código, tenemos un select con unos valores y un bloque con class="paginacion" que será el bloque que contendrá las páginas que generaremos.

Utilizaremos un poco de CSS para darle algo de estilo a la lista de la paginación y a la página seleccionada.


.paginacion li{
display:inline;
list-style:none;
cursor:pointer;
}

.actual{
font-weight:bold;
text-decoration:underline;
}

Por último tan solo debemos usar el siguiente script para generar la paginación sobre el bloque mencionado y realizar las operaciones oportunas al clicar sobre cada página que es la llamada mediante AJAX a un servlet en este caso y el movimiento de las páginas.


jQuery(document).ready(	
		
function() {

var paginasTotales=10;
		
var limite=0;
			
	if (paginasTotales>=5) {limite=5;}
	
	else {limite=paginasTotales;};
			
	for(var i=1;i<=limite;i++){
			
		$('.paginacion').append('<li>'+ i +'</li>');
			
	};
			
	$('.paginacion li:first-child').addClass('actual');
				
	$('.paginacion li').click(function(){
							
		var pagina=$(this).text();
					
		if (parseInt(pagina)==1){	
			var i= parseInt(0);
		}
		else if(parseInt(pagina)==2){
			var i= parseInt(-1);
		}
		else{
			var i= parseInt(-2);
		}	
		
		
		if (parseInt(pagina)==paginasTotales){	
			var i= parseInt(-4);
		}
		else if (parseInt(pagina)==paginasTotales-1){	
			var i= parseInt(-3);
		}
				
		$('.paginacion li').removeClass('actual');
				 
		$('.paginacion li').each(function(){
					
			var calculo_paginacion = parseInt(pagina) + parseInt(i);
						
			$(this).text(calculo_paginacion);

			if(i==0){$(this).addClass('actual')};
					
				i+=parseInt(1);		
		});
				
				/* AJAX */
								
		$.get("/MiServlet", { npag: pagina },
			function(data){
											
				$('select option').remove();
				
				$('select').append(data);
				
		});
						
	});

});

Como podemos ver en el script anterior podemos seleccionar el número de páginas que queremos generar y además podemos hacer la llamada AJAX que queramos y hacer con lo devuelto lo que queramos. En este caso hemos llamado a un servlet que genera nuevas option que, a porteriori, incluimos en el select actual y borramos las antiguas.

Podemos bajar el ejemplo desde el siguiente enlace.

Espero que os haya ayudado y os sea útil mi script.

COMENTARIOS

17-06-2013 22:48:26
@freddy, esta claro que hace falta la llamda a la BD. Por eso utiliza un servlet. Si no se usase algo que funcione como backend lo máximo que podríamos tener es una paginación simulada en la que se carga todo y luego se oculte el contenido que sobre en cada página.
17-06-2013 18:43:44
esta bueno pero hay que llamar a la BD para ver los resultados.
12-12-2012 18:06:12
Es un script que genera una paginación inferior (1,2,3,4...) y al clicar sobre el número de la página hace una llamada AJAX para cargar contenido nuevo. En nuestro caso, hace una llamada AJAX a un Servlet que devuelve nuevas options para el select y las añade al select. La llamada AJAX deberías de adecuarla a tus necesidades.
11-12-2012 22:47:44
No entendi nada

DEJA TU COMENTARIO