ul/ol list paging


/ Published in: jQuery
Save to your folder(s)

Quick plugin to paginate a liste.


Copy this code and paste it in your HTML
  1. /*
  2.  * Use:
  3.  * <script src="lib/jquery.pagination.js"></script>
  4.  * $('#mylist').pagination();
  5.  */
  6.  
  7. (function($) {
  8. $.fn.pagination = function(options) {
  9.  
  10. var defaults = {
  11. nbParPage: 5,
  12. pageAffichee: 1,
  13. positionNav: "top" /* top, bottom, or both */
  14. };
  15. var options = $.extend(defaults, options);
  16.  
  17. return this.each(function() {
  18.  
  19. var selecteur = $(this);
  20.  
  21. function afficherElements (numPremier, nbParPage, nbElements) {
  22. selecteur.children('li').hide();
  23. var no = numPremier;
  24. while ( no < (numPremier + nbParPage) && no <= (nbElements-1) ) {
  25. selecteur.children('li:nth-child(' + (no+1) + ')').fadeIn(250);
  26. no += 1;
  27. }
  28. }
  29.  
  30. var nbElements = selecteur.children('li').length;
  31. var nbPages = Math.floor(nbElements / options.nbParPage);
  32. if (nbElements % options.nbParPage > 0)
  33. nbPages += 1;
  34. var pageAffichee = 1;
  35.  
  36. if ( nbPages > 1 ) {
  37. // Ecriture de la pagination
  38. var pageNav = '<div class="nav"><ul>';
  39. var i;
  40. for ( i = 1; i <= nbPages; i++) {
  41. if (i == options.pageAffichee)
  42. pageNav += '<li class="pageEnCours"><a id="navpage' + i + '" href="#">' + i + '</a></li>';
  43. else
  44. pageNav += '<li><a id="navpage' + i + '" href="#">' + i + '</a></li>';
  45. }
  46. pageNav += '</ul></div>';
  47. switch ( options.positionNav ) {
  48. case "bottom":
  49. selecteur.after( pageNav );
  50. break;
  51. case "both":
  52. selecteur.before( pageNav );
  53. selecteur.after( pageNav );
  54. break;
  55. default:
  56. selecteur.before( pageNav );
  57. }
  58.  
  59. // Affichage de la premiere page au chargement
  60. var numPremierElement = ( options.nbParPage * options.pageAffichee ) - options.nbParPage;
  61. afficherElements(numPremierElement, options.nbParPage, nbElements);
  62.  
  63. // Gestion du clic sur un numero de page
  64. $('.nav ul li a').click(function() {
  65. var pageAffichee = parseInt($(this).attr("id").substring(12));
  66.  
  67. $(this).parent('li').siblings('.pageEnCours').removeClass('pageEnCours');
  68. //selecteur.find('li.pageEnCours').removeClass('pageEnCours');
  69. $(this).parent('li').addClass('pageEnCours');
  70.  
  71. var numPremierElement = ( options.nbParPage * pageAffichee ) - options.nbParPage;
  72. afficherElements(numPremierElement, options.nbParPage, nbElements);
  73.  
  74. return false;
  75. });
  76.  
  77. }
  78. });
  79. }
  80. })(jQuery);

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.