Come posso creare una paginazione per le tabelle con jQuery?

Come posso creare una paginazione per le tabelle con jQuery?

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