diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js
index cbb9656..6f1562b 100644
--- a/jquery.twbsPagination.js
+++ b/jquery.twbsPagination.js
@@ -1,5 +1,5 @@
/*!
- * jQuery pagination plugin v1.2.3
+ * jQuery pagination plugin v1.2.4
* http://esimakin.github.io/twbs-pagination/
*
* Copyright 2014, Eugene Simakin
@@ -41,6 +41,14 @@
this.$element.first().bind('page', this.options.onPageClick);
}
+ if (this.options.href) {
+ var m, regexp = this.options.href.replace(/[-\/\\^$*+?.|[\]]/g, '\\$&');
+ regexp = regexp.replace(this.options.hrefVariable, '(\\d+)');
+ if ((m = new RegExp(regexp, 'i').exec(window.location.href)) != null) {
+ this.options.startPage = parseInt(m[1], 10);
+ }
+ }
+
var tagName = (typeof this.$element.prop === 'function') ?
this.$element.prop('tagName') : this.$element.attr('tagName');
@@ -89,59 +97,63 @@
var $listItems = $();
if (this.options.first) {
- $listItems = $listItems.add(this.buildItem('first', 1, this.options.firstClass));
+ $listItems = $listItems.add(this.buildItem('first', 1));
}
if (this.options.prev) {
var prev = pages.currentPage > 1 ? pages.currentPage - 1 : this.options.loop ? this.options.totalPages : 1;
- $listItems = $listItems.add(this.buildItem('prev', prev, this.options.prevClass));
+ $listItems = $listItems.add(this.buildItem('prev', prev));
}
for (var i = 0; i < pages.numeric.length; i++) {
- $listItems = $listItems.add(this.buildItem('page', pages.numeric[i], this.options.pageClass));
+ $listItems = $listItems.add(this.buildItem('page', pages.numeric[i]));
}
if (this.options.next) {
var next = pages.currentPage < this.options.totalPages ? pages.currentPage + 1 : this.options.loop ? 1 : this.options.totalPages;
- $listItems = $listItems.add(this.buildItem('next', next, this.options.nextClass));
+ $listItems = $listItems.add(this.buildItem('next', next));
}
if (this.options.last) {
- $listItems = $listItems.add(this.buildItem('last', this.options.totalPages, this.options.lastClass));
+ $listItems = $listItems.add(this.buildItem('last', this.options.totalPages));
}
return $listItems;
},
- buildItem: function (type, page, el_class) {
+ buildItem: function (type, page) {
var itemContainer = $('
'),
itemContent = $(''),
itemText = null;
- itemContainer.addClass(el_class);
- itemContainer.data('page', page);
-
switch (type) {
case 'page':
itemText = page;
+ itemContainer.addClass(this.options.pageClass);
break;
case 'first':
itemText = this.options.first;
+ itemContainer.addClass(this.options.firstClass);
break;
case 'prev':
itemText = this.options.prev;
+ itemContainer.addClass(this.options.prevClass);
break;
case 'next':
itemText = this.options.next;
+ itemContainer.addClass(this.options.nextClass);
break;
case 'last':
itemText = this.options.last;
+ itemContainer.addClass(this.options.lastClass);
break;
default:
break;
}
- itemContainer.append(itemContent.attr('href', this.href(page)).html(itemText));
+ itemContainer.data('page', page);
+ itemContainer.data('page-type', type);
+ itemContainer.append(itemContent.attr('href', this.makeHref(page)).html(itemText));
return itemContainer;
},
@@ -175,21 +187,26 @@
this.$listContainer.children().remove();
this.$listContainer.append(this.buildListItems(pages));
- this.$listContainer.find('.'+this.options.pageClass).removeClass(this.options.activeClass).filter(function () {
+ var children = this.$listContainer.children();
+ children.filter(function () {
return $(this).data('page') === pages.currentPage;
}).addClass(this.options.activeClass);
- this.$listContainer.find('.'+this.options.firstClass)
- .toggleClass(this.options.disabledClass, pages.currentPage === 1);
+ children.filter(function () {
+ return $(this).data('page-type') === 'first';
+ }).toggleClass(this.options.disabledClass, pages.currentPage === 1);
- this.$listContainer.find('.'+this.options.lastClass)
- .toggleClass(this.options.disabledClass, pages.currentPage === this.options.totalPages);
+ children.filter(function () {
+ return $(this).data('page-type') === 'last';
+ }).toggleClass(this.options.disabledClass, pages.currentPage === this.options.totalPages);
- this.$listContainer.find('.'+this.options.prevClass)
- .toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === 1);
+ children.filter(function () {
+ return $(this).data('page-type') === 'prev';
+ }).toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === 1);
- this.$listContainer.find('.'+this.options.nextClass)
- .toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === this.options.totalPages);
+ children.filter(function () {
+ return $(this).data('page-type') === 'next';
+ }).toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === this.options.totalPages);
},
setupEvents: function () {
@@ -197,7 +214,12 @@
this.$listContainer.find('li').each(function () {
var $this = $(this);
$this.off();
- if ($this.hasClass(base.options.disabledClass) || $this.hasClass(base.options.activeClass)) return;
+ if ($this.hasClass(base.options.disabledClass) || $this.hasClass(base.options.activeClass)) {
+ $this.click(function (evt) {
+ evt.preventDefault();
+ });
+ return;
+ }
$this.click(function (evt) {
// Prevent click event if href is not set.
!base.options.href && evt.preventDefault();
@@ -206,7 +228,7 @@
});
},
- href: function (c) {
+ makeHref: function (c) {
return this.options.href ? this.options.href.replace(this.options.hrefVariable, c) : "#";
}
diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js
index 55bf82a..9379fa3 100644
--- a/jquery.twbsPagination.min.js
+++ b/jquery.twbsPagination.min.js
@@ -1,9 +1,9 @@
/*!
- * jQuery pagination plugin v1.2.3
+ * jQuery pagination plugin v1.2.4
* http://esimakin.github.io/twbs-pagination/
*
* Copyright 2014, Eugene Simakin
* Released under Apache 2.0 license
* http://apache.org/licenses/LICENSE-2.0.html
*/
-;(function(e,t,n,r){"use strict";var i=e.fn.twbsPagination;var s=function(t,n){this.$element=e(t);this.options=e.extend({},e.fn.twbsPagination.defaults,n);if(this.options.startPage<1||this.options.startPage>this.options.totalPages){throw new Error("Start page option is incorrect")}this.options.totalPages=parseInt(this.options.totalPages);if(isNaN(this.options.totalPages)){throw new Error("Total pages option is not correct!")}this.options.visiblePages=parseInt(this.options.visiblePages);if(isNaN(this.options.visiblePages)){throw new Error("Visible pages option is not correct!")}if(this.options.totalPages")}this.$listContainer.addClass(this.options.paginationClass);if(r!=="UL"){this.$element.append(this.$listContainer)}this.render(this.getPages(this.options.startPage));this.setupEvents();return this};s.prototype={constructor:s,destroy:function(){this.$element.empty();this.$element.removeData("twbs-pagination");this.$element.unbind("page");return this},show:function(e){if(e<1||e>this.options.totalPages){throw new Error("Page is incorrect.")}this.render(this.getPages(e));this.setupEvents();this.$element.trigger("page",e);return this},buildListItems:function(t){var n=e();if(this.options.first){n=n.add(this.buildItem("first",1,this.options.firstClass))}if(this.options.prev){var r=t.currentPage>1?t.currentPage-1:this.options.loop?this.options.totalPages:1;n=n.add(this.buildItem("prev",r,this.options.prevClass))}for(var i=0;i"),s=e(""),o=null;i.addClass(r);i.data("page",n);switch(t){case"page":o=n;break;case"first":o=this.options.first;break;case"prev":o=this.options.prev;break;case"next":o=this.options.next;break;case"last":o=this.options.last;break;default:break}i.append(s.attr("href",this.href(n)).html(o));return i},getPages:function(e){var t=[];var n=Math.floor(this.options.visiblePages/2);var r=e-n+1-this.options.visiblePages%2;var i=e+n;if(r<=0){r=1;i=this.options.visiblePages}if(i>this.options.totalPages){r=this.options.totalPages-this.options.visiblePages+1;i=this.options.totalPages}var s=r;while(s<=i){t.push(s);s++}return{currentPage:e,numeric:t}},render:function(t){this.$listContainer.children().remove();this.$listContainer.append(this.buildListItems(t));this.$listContainer.find("."+this.options.pageClass).removeClass(this.options.activeClass).filter(function(){return e(this).data("page")===t.currentPage}).addClass(this.options.activeClass);this.$listContainer.find("."+this.options.firstClass).toggleClass(this.options.disabledClass,t.currentPage===1);this.$listContainer.find("."+this.options.lastClass).toggleClass(this.options.disabledClass,t.currentPage===this.options.totalPages);this.$listContainer.find("."+this.options.prevClass).toggleClass(this.options.disabledClass,!this.options.loop&&t.currentPage===1);this.$listContainer.find("."+this.options.nextClass).toggleClass(this.options.disabledClass,!this.options.loop&&t.currentPage===this.options.totalPages)},setupEvents:function(){var t=this;this.$listContainer.find("li").each(function(){var n=e(this);n.off();if(n.hasClass(t.options.disabledClass)||n.hasClass(t.options.activeClass))return;n.click(function(e){!t.options.href&&e.preventDefault();t.show(parseInt(n.data("page"),10))})})},href:function(e){return this.options.href?this.options.href.replace(this.options.hrefVariable,e):"#"}};e.fn.twbsPagination=function(t){var n=Array.prototype.slice.call(arguments,1);var i;var o=e(this);var u=o.data("twbs-pagination");var a=typeof t==="object"&&t;if(!u)o.data("twbs-pagination",u=new s(this,a));if(typeof t==="string")i=u[t].apply(u,n);return i===r?o:i};e.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,href:false,hrefVariable:"{{number}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:false,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"};e.fn.twbsPagination.Constructor=s;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=i;return this}})(jQuery,window,document);
\ No newline at end of file
+;(function(e,d,a,f){var b=e.fn.twbsPagination;var c=function(j,h){this.$element=e(j);this.options=e.extend({},e.fn.twbsPagination.defaults,h);if(this.options.startPage<1||this.options.startPage>this.options.totalPages){throw new Error("Start page option is incorrect")}this.options.totalPages=parseInt(this.options.totalPages);if(isNaN(this.options.totalPages)){throw new Error("Total pages option is not correct!")}this.options.visiblePages=parseInt(this.options.visiblePages);if(isNaN(this.options.visiblePages)){throw new Error("Visible pages option is not correct!")}if(this.options.totalPages")}this.$listContainer.addClass(this.options.paginationClass);if(i!=="UL"){this.$element.append(this.$listContainer)}this.render(this.getPages(this.options.startPage));this.setupEvents();return this};c.prototype={constructor:c,destroy:function(){this.$element.empty();this.$element.removeData("twbs-pagination");this.$element.unbind("page");return this},show:function(g){if(g<1||g>this.options.totalPages){throw new Error("Page is incorrect.")}this.render(this.getPages(g));this.setupEvents();this.$element.trigger("page",g);return this},buildListItems:function(g){var j=e();if(this.options.first){j=j.add(this.buildItem("first",1))}if(this.options.prev){var l=g.currentPage>1?g.currentPage-1:this.options.loop?this.options.totalPages:1;j=j.add(this.buildItem("prev",l))}for(var h=0;h"),k=e(""),g=null;switch(i){case"page":g=j;h.addClass(this.options.pageClass);break;case"first":g=this.options.first;h.addClass(this.options.firstClass);break;case"prev":g=this.options.prev;h.addClass(this.options.prevClass);break;case"next":g=this.options.next;h.addClass(this.options.nextClass);break;case"last":g=this.options.last;h.addClass(this.options.lastClass);break;default:break}h.data("page",j);h.data("page-type",i);h.append(k.attr("href",this.makeHref(j)).html(g));return h},getPages:function(j){var g=[];var k=Math.floor(this.options.visiblePages/2);var l=j-k+1-this.options.visiblePages%2;var h=j+k;if(l<=0){l=1;h=this.options.visiblePages}if(h>this.options.totalPages){l=this.options.totalPages-this.options.visiblePages+1;h=this.options.totalPages}var i=l;while(i<=h){g.push(i);i++}return{currentPage:j,numeric:g}},render:function(g){this.$listContainer.children().remove();this.$listContainer.append(this.buildListItems(g));var h=this.$listContainer.children();h.filter(function(){return e(this).data("page")===g.currentPage}).addClass(this.options.activeClass);h.filter(function(){return e(this).data("page-type")==="first"}).toggleClass(this.options.disabledClass,g.currentPage===1);h.filter(function(){return e(this).data("page-type")==="last"}).toggleClass(this.options.disabledClass,g.currentPage===this.options.totalPages);h.filter(function(){return e(this).data("page-type")==="prev"}).toggleClass(this.options.disabledClass,!this.options.loop&&g.currentPage===1);h.filter(function(){return e(this).data("page-type")==="next"}).toggleClass(this.options.disabledClass,!this.options.loop&&g.currentPage===this.options.totalPages)},setupEvents:function(){var g=this;this.$listContainer.find("li").each(function(){var h=e(this);h.off();if(h.hasClass(g.options.disabledClass)||h.hasClass(g.options.activeClass)){h.click(function(i){i.preventDefault()});return}h.click(function(i){!g.options.href&&i.preventDefault();g.show(parseInt(h.data("page"),10))})})},makeHref:function(g){return this.options.href?this.options.href.replace(this.options.hrefVariable,g):"#"}};e.fn.twbsPagination=function(i){var h=Array.prototype.slice.call(arguments,1);var k;var l=e(this);var j=l.data("twbs-pagination");var g=typeof i==="object"&&i;if(!j){l.data("twbs-pagination",(j=new c(this,g)))}if(typeof i==="string"){k=j[i].apply(j,h)}return(k===f)?l:k};e.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,href:false,hrefVariable:"{{number}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:false,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"};e.fn.twbsPagination.Constructor=c;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=b;return this}})(jQuery,window,document);
\ No newline at end of file