jQuery: creare la paginazione lato client per le tabelle

Se vogliamo implementare una semplice paginazione lato client per le tabelle HTML, jQuery è un'ottima soluzione.

Possiamo implementare il seguente plugin jQuery:


(function( $ ) {
	
	$.fn.paginate = function( n ) {

        return this.each(function() {
            var currentPage = 0;
            var numPerPage = n;
            var $table = $( this );
            
            $table.on( "repaginate", function() {
                $table.find( "tbody tr" ).hide().slice( currentPage * numPerPage, ( currentPage + 1 ) * numPerPage ).show();
            });
            $table.trigger( "repaginate" );
            var numRows = $table.find( "tbody tr" ).length;
            var numPages = Math.ceil( numRows / numPerPage );
            var $pager = $( "<div class='pager'></div>" );
            for ( var page = 0; page < numPages; page++ ) {
                $( "<span class='page-number'></span>" ).text( page + 1 ).on( "click", {
                    newPage: page
                }, function( event ) {
                    currentPage = event.data["newPage"];
                    $table.trigger( "repaginate" );
                    $( this ).addClass( "active" ).siblings().removeClass( "active" );
                }).appendTo( $pager );
            }
            $pager.insertBefore( $table ).find( "span.page-number:first" ).addClass( "active" );
        });
    };

	
})( jQuery );

Il plugin accetta come parametro il numero di righe da mostrare per ciascuna pagina.

Torna su