• Stars
    star
    358
  • Rank 118,855 (Top 3 %)
  • Language
    JavaScript
  • Created over 14 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Pagination module for jQuery

jQuery Pagination Plugin

Description

When you have a a large list of items (e.g. search results or news articles), you can display them grouped in pages and present navigational elements to move from one page to another. This plugin creates these navigational elements.

Usage

Include jQuery, the pagination plugin script and the pagination.css file in your HTML page. In your HTML body create a container tag pair that will hold the link elements. Give it an id or class attribute (e.g. "News-Pagination"). This attribute can used as the selector for jQuery.

Next, write a JavaScript function that has two parameters: page_index and paging_container. This is the callback function where you react to clicks on the pagination links. It should select a slice from your content, depending on the page id.:

function handlePaginationClick(new_page_index, pagination_container) {
    // This selects 20 elements from a content array
    for(var i=new_page_id;i<;i++) {
        $('#MyContentArea').append(content[i]);
    }
    return false;
}

The code in this callback function requires knowledge of the jQuery DOM manipulation functions. This is where you write your display routines.

In the initialisation function of your page, when you know how many items you want to display overall, create the pagination element like this::

// First Parameter: number of items
// Second Parameter: options object
$("#News-Pagination").pagination(122, {
        items_per_page:20,
        callback:handlePaginationClick
});

This will create the navigation links inside the container. You will see the numbers 1-7, the first number is highlighted. When you click on another number, the highlighting changes and your callback function "handlePaginationClick" is called.

The plugin is highly configurable through the option parameter and all elements can be styled separately.

Available Options

The following list describes what options you have for the option object:

callback
A callback function that is called when a user clicks on a pagination link. The function receives two parameters: the new page index and the pagination container (a DOM element). If the callback returns false, the event propagation is stopped. Default value: function(){return false;}. This callback function is essential for the functionality of the pagination! It should contain code that updates your content. For a fast user experience you should NOT load content via AJAX in this function. Instead, pre-load some content pages and switch between them with this function.
current_page
The page that is selected when the pagination is initialized. Default: 0
items_per_page
The number of items per page. The maximum number of pages is calculated by dividing the number of items by items_per_page (rounded up, minimum 1). Please note: This value is only for calculating the number of pages. The actual selection of the items correlating to the current page and number of items must be done by your code in your callback function! Default: 10
link_to
Link target of the pagination links. Normally the page selection is triggered through an onclick event. If the link contains the string __id__, it will be replaced with the page number. Default: #
num_display_entries
Maximum number of pagination links that are visible. Set to 0 to display a simple "Previous/Next"-Navigation. Set to an odd number for maximum symmetry and aesthetic pleasure. Default: 11
next_text
Text for the "Next"-link that increases the current page number by 1. Leave blank to hide the link. Default: Next
next_show_always
If this is set to false, the "Next"-link is only shown when the page number can be increased. Default: true
prev_text
Text for the "Previous"-link that decreases the current page number by 1. Leave blank to hide the link. Default: Previous
prev_show_always
If this is set to false, the "Previous"-link is only shown when the page number can be decreased. Default: true
num_edge_entries
If this number is set to 1, links to the first and the last page are always shown, independent of the current position and the visibility constraints set by num_display_entries. You can set it to bigger numbers to show more links. Default: 0
ellipse_text
When there is a gap between the numbers created by num_edge_entries and the displayed number interval, this text will be inserted into the gap (inside a span tag). Can be left blank to avoid the additional tag. Default: ...
load_first_page
If true (default) then the callback is executed when the plugin is initialized. If you load your content with AJAX and already show content whey you initialize the pagination, you should set this to false.

Triggering pagination with custom events

There may be use cases where you want to change the pagination from your own JavaScript code. For example in a wizard or a questionnaire you skip pages if a certain option is not selected. Or clicking on images in an image gallery should trigger the "next page" event. For these use cases you use jQuery custom events like this::

// Jump to the 5th page
$("#News-Pagination").trigger('setPage', [4]);
// Go to the next page
$("#News-Pagination").trigger('nextPage');
// Go to the previous page
$("#News-Pagination").trigger('prevPage');
// Refresh the current page
$("#News-Pagination").trigger('currentPage');

The event handlers check if the new page number is inside the boundaries of the number of pages and ignore the event if it is outside.

Version history

Version 1.0

Inital release

Version 1.1

Fixed a bug when the click on a pagination item was propagated to the browser.

Version 1.2

Fixed bug with jQuery.noConflict(). Wrote better demo files. Tested with jQuery 1.3.1

Version 2.0rc1

  • Complete, more object-oriented rewrite
  • Now requires jQuery 1.4. Tested with jQuery 1.4.2
  • Support for several synchronized pagination containers

Version 2.0rc2

Bugfix. Renderer used restricted keyword "default"

Version 2.0.1

  • Bugfix for GitHub Issue #1, found by Cody Lindley
  • Small text corrections
  • Start end end points now have classes.

Version 2.1

Pagination can now be controlled from you own JavaScript code by triggering custom events. See demo/demo_events.htm for an example.

Version 2.2

alexhayes added an option to avoid calling the callback when the plugin is initialized.

Future Plans

  • Optional links for jumping a fixed number of pages.
  • Trigger events when a page is selected.
  • Implement paginaton as a jQuery UI widget.
  • More renderers for rendering the Pagination elements differently.
  • Documentation and examples how you implement your own renderers.
  • Write unit tests and use QUnit instead of JSUnit.

I'll implement these features as I see fit and when my time allows it. If you'd like to see any of those features now, feel free to contact me and we can discuss a reasonable fee.

I'd be glad if you could send me a notice where you use jQuery Pagination. Knowing common use cases will help me to improve the plugin in the future.

License and Contact Information

This plugin is licensed under the GPL v2. You can find the full license text here: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt If you need another license, write me an email and tell me what the library will be used for. I usually grant other open source licenses on an individual basis.

Source code: http://github.com/gbirke/jquery_pagination

You can reach me at:

Birke Software
Gabriel Birke
Eckerstr. 6
30161 Hannover
gb (at) birke-software (dot) de

More Repositories

1

Sanitize.js

Sanitize.js is a whitelist-based HTML sanitizer.
JavaScript
340
star
2

rememberme

A PHP library that implements secure "Remember me" cookies
PHP
125
star
3

ansible-create-users

Create users from list
Python
20
star
4

grok-asterisk

grok patterns for Asterisk log file
Ruby
13
star
5

scrapy-multifeedexporter

Extension to export scraped items to multiple feeds
Python
7
star
6

dokuwiki_solr

With this Dokuwiki plugin you can index and search your pages with an external Solr server
PHP
6
star
7

mite-overtime

Overtime display for mite.yo.lk
JavaScript
4
star
8

telescope-foldmarkers.nvim

Quickly jump to your fold markers {{{
Lua
4
star
9

csv2mediawiki

Convert CSV data to MediaWiki tables
PHP
3
star
10

gbRememberMe

PHP
3
star
11

indexnumber

A DokuWiki plugin for generating image and table numbers
PHP
3
star
12

php-extensionparser

Parser for Asterisk extension files
PHP
3
star
13

vuex-composition-doodle

An example on different ways to use Vuex with the composition API
JavaScript
3
star
14

xslfodebugging

A stylesheet that inserts additional formatting in XSL FO code for debugging purposes
2
star
15

git-rebase-training

Learn git with puppies!
HTML
2
star
16

mediawiki-api-client

Guzzle service definition for MediaWiki API
PHP
2
star
17

akiro

Expense tracker written in react-native
JavaScript
2
star
18

pin-this-day

Display bookmarks from a pinboard.in account that were posted one, two, three or more years ago on this day
PHP
2
star
19

fundraising-lessons-presentation

What we learned while building the new WMDE Fundraising Frontend
CSS
2
star
20

geofency-location-webhook

FHEM presence through Geofency webhook
PHP
2
star
21

colorpicker

Dokuwiki Toolbar Color Picker
JavaScript
1
star
22

advent-of-code-2019

Solutions for Advent of Code 2019
Racket
1
star
23

secret-santa

Web app to generate Secret Santa partners for forgetful people
PHP
1
star
24

dokuwiki_solr_namespaces

Show namespaces in dokuwiki Solr search result
PHP
1
star
25

selftracker-kata

CSS
1
star
26

rotating-hat

A web application to create calendar files that contain schedules for recurring tasks distributed among people.
PHP
1
star
27

js-search-benchmark

Compare performance of Lunr and search-index
JavaScript
1
star
28

php_deserialize

Shell script to display files with serialized PHP data
1
star
29

rpg-list

A static site for my RPG collection
Liquid
1
star
30

pinboard-search

Advanced search features for pinboard.in
JavaScript
1
star
31

serialrenamer

Web-based TV series renamer using theTVDB
JavaScript
1
star
32

doit-filemappers

File-based workflows for the DoIt automation tool
Python
1
star
33

docx2dokuwiki-xsl

Stylesheet to convert DOCX files to dokuwiki text
XML
1
star
34

scrap-printer

Print scraps of paper with name tags, passwords, etc
CSS
1
star
35

safari-instapaper-menu

"Send to Instapaper" for Safari context menu
JavaScript
1
star
36

codemarkers

Annotate source code for examples in documentation
JavaScript
1
star
37

wikimedia-fundraising-devbox

Ansible playbook for LEMP 7.0 stack for Wikimedia Germany fundraising fronted application
Ruby
1
star
38

roman-numerals-wmde-1

Roman numerals exercise
JavaScript
1
star
39

pinboard-feed

Process and clean up pinboard.in RSS feeds
PHP
1
star
40

tiddly-test

Testing saving to tiddlyWiki
HTML
1
star
41

factory-book

An ebook about factories and dependency injection in PHP
Python
1
star
42

spress-docker

Docker files for Spress, a static site builder
1
star
43

ansible-composer-cache

Cache composer dir for atomic deployments
1
star
44

youtube-playlist-exporter

A browser extension to export YouTube playlists and 'Watch Later' to a text file
JavaScript
1
star
45

indexreference

A DokuWiki plugin for referencing indexnumbers
PHP
1
star
46

logstash-experiments

Fiddling around with logstash
Shell
1
star
47

scrapy-vivo

Screenscraper Science 2.0
Python
1
star
48

oh-my-zsh-customizations

Customizations for oh-my-zsh
Shell
1
star
49

openhab-ansible-setup

Ansible playbooks for setting up OpenHAB
Shell
1
star
50

game-of-life-functional-grid

Example of how to use map and filter to get neighbors in Conway's Game of Life
JavaScript
1
star
51

gbirke.github.io

My blog
1
star
52

geofency-proxy

Proxy for triggering HTTP calls on Geofoency POSTs
PHP
1
star