提交 13f261ca 编写于 作者: L Leon Shi

chore: update examples & docs & dist files

上级 4e240d54
/*
* pagination.js 2.0.8
* pagination.js 2.1.0
* A jQuery plugin to provide simple yet fully customisable pagination.
* https://github.com/superRaytin/paginationjs
*
......@@ -34,20 +34,21 @@
var container = $(this);
var attributes = $.extend({}, $.fn[pluginName].defaults, options);
var pagination = {
initialize: function() {
var self = this;
// Save attributes of current instance
// Cache attributes of current instance
if (!container.data('pagination')) {
container.data('pagination', {});
}
// Before initialize
if (self.callHook('beforeInit') === false) return;
// If pagination has been initialized, destroy it
// Pagination has been initialized, destroy it
if (container.data('pagination').initialized) {
$('.paginationjs', container).remove();
}
......@@ -55,48 +56,48 @@
// Whether to disable Pagination at the initialization
self.disabled = !!attributes.disabled;
// Passed to the callback function
// Will be passed to the callback function
var model = self.model = {
pageRange: attributes.pageRange,
pageSize: attributes.pageSize
};
// "dataSource"`s type is unknown, parse it to find true data
// dataSource`s type is unknown, parse it to find true data
self.parseDataSource(attributes.dataSource, function(dataSource) {
// Whether pagination is sync mode
self.sync = Helpers.isArray(dataSource);
if (self.sync) {
// is async mode
self.isAsync = Helpers.isString(dataSource);
if (Helpers.isArray(dataSource)) {
model.totalNumber = attributes.totalNumber = dataSource.length;
}
// Obtain the total number of pages
model.totalPage = self.getTotalPage();
// in async mode and specified totalNumber locator
self.isDynamicTotalNumber = self.isAsync && attributes.totalNumberLocator;
// Less than one page
// Have only one page
if (attributes.hideWhenLessThanOnePage) {
if (model.totalPage <= 1) return;
if (self.getTotalPage() <= 1) return;
}
var el = self.render(true);
// Extra className
// Add extra className
if (attributes.className) {
el.addClass(attributes.className);
}
model.el = el;
// Load template
// Append pagination element to container
container[attributes.position === 'bottom' ? 'append' : 'prepend'](el);
// Binding events
// Bind events
self.observer();
// initialized flag
// Add initialization flag
container.data('pagination').initialized = true;
// After initialized
// Will be invoked after initialized
self.callHook('afterInit', el);
});
},
......@@ -107,12 +108,11 @@
var el = model.el || $('<div class="paginationjs"></div>');
var isForced = isBoot !== true;
// Before render
self.callHook('beforeRender', isForced);
var currentPage = model.pageNumber || attributes.pageNumber;
var pageRange = attributes.pageRange;
var totalPage = model.totalPage;
var totalPage = self.getTotalPage();
var rangeStart = currentPage - pageRange;
var rangeEnd = currentPage + pageRange;
......@@ -125,19 +125,16 @@
if (rangeStart <= 1) {
rangeStart = 1;
rangeEnd = Math.min(pageRange * 2 + 1, totalPage);
}
el.html(self.createTemplate({
currentPage: currentPage,
pageRange: pageRange,
totalPage: totalPage,
rangeStart: rangeStart,
rangeEnd: rangeEnd
}));
// After render
self.callHook('afterRender', isForced);
return el;
......@@ -147,11 +144,11 @@
createTemplate: function(args) {
var self = this;
var currentPage = args.currentPage;
var totalPage = args.totalPage;
var totalPage = self.getTotalPage();
var rangeStart = args.rangeStart;
var rangeEnd = args.rangeEnd;
var totalNumber = attributes.totalNumber;
var totalNumber = self.getTotalNumber();
var showPrevious = attributes.showPrevious;
var showNext = attributes.showNext;
......@@ -318,7 +315,14 @@
return html;
},
// Go to the specified page
// Find the totalNumber from remote response
// Only available in async mode
findTotalNumberFromRemoteResponse: function(response) {
var self = this;
self.model.totalNumber = attributes.totalNumberLocator(response);
},
// Go to specified page
go: function(number, callback) {
var self = this;
var model = self.model;
......@@ -326,17 +330,23 @@
if (self.disabled) return;
var pageNumber = number;
var pageSize = attributes.pageSize;
var totalPage = model.totalPage;
pageNumber = parseInt(pageNumber);
// Page number out of bounds
if (!pageNumber || pageNumber < 1 || pageNumber > totalPage) return;
// Page number is out of bounds
if (!pageNumber || pageNumber < 1) return;
var pageSize = attributes.pageSize;
var totalNumber = self.getTotalNumber();
var totalPage = self.getTotalPage();
// Sync mode
if (self.sync) {
render(self.getDataSegment(pageNumber));
// Page number is out of bounds
if (totalNumber) {
if (pageNumber > totalPage) return;
}
// Pick data fragment in sync mode
if (!self.isAsync) {
render(self.getDataFragment(pageNumber));
return;
}
......@@ -356,10 +366,15 @@
};
$.extend(true, formatAjaxParams, attributes.ajax);
$.extend(formatAjaxParams.data || {}, postData);
$.extend(formatAjaxParams.data, postData);
formatAjaxParams.url = attributes.dataSource;
formatAjaxParams.success = function(response) {
if (self.isDynamicTotalNumber) {
self.findTotalNumberFromRemoteResponse(response);
} else {
self.model.totalNumber = attributes.totalNumber;
}
render(self.filterDataByLocator(response));
};
formatAjaxParams.error = function(jqXHR, textStatus, errorThrown) {
......@@ -372,7 +387,7 @@
$.ajax(formatAjaxParams);
function render(data) {
// Before paging
// Will be invoked before paging
if (self.callHook('beforePaging', pageNumber) === false) return false;
// Pagination direction
......@@ -382,7 +397,7 @@
self.render();
if (self.disabled && !self.sync) {
if (self.disabled && self.isAsync) {
// enable
self.enable();
}
......@@ -390,8 +405,8 @@
// cache model data
container.data('pagination').model = model;
// format result before execute callback
if ($.isFunction(attributes.formatResult)) {
// format result data before callback executed
if (attributes.formatResult) {
var cloneData = $.extend(true, [], data);
if (!Helpers.isArray(data = attributes.formatResult(cloneData))) {
data = cloneData;
......@@ -403,16 +418,15 @@
// callback
self.doCallback(data, callback);
// After pageing
self.callHook('afterPaging', pageNumber);
// Already the first page
// pageNumber now is the first page
if (pageNumber == 1) {
self.callHook('afterIsFirstPage');
}
// Already the last page
if (pageNumber == model.totalPage) {
// pageNumber now is the last page
if (pageNumber == self.getTotalPage()) {
self.callHook('afterIsLastPage');
}
}
......@@ -453,7 +467,7 @@
disable: function() {
var self = this;
var source = self.sync ? 'sync' : 'async';
var source = self.isAsync ? 'async' : 'sync';
// Before disabling
if (self.callHook('beforeDisable', source) === false) return;
......@@ -467,7 +481,7 @@
enable: function() {
var self = this;
var source = self.sync ? 'sync' : 'async';
var source = self.isAsync ? 'async' : 'sync';
// Before enabling
if (self.callHook('beforeEnable', source) === false) return;
......@@ -499,7 +513,7 @@
self.model.el.hide();
},
// Replace variables of template
// Parse variables in template
replaceVariables: function(template, variables) {
var formattedString;
......@@ -513,11 +527,11 @@
return formattedString;
},
// Get data segments
getDataSegment: function(number) {
// Get data fragment
getDataFragment: function(number) {
var pageSize = attributes.pageSize;
var dataSource = attributes.dataSource;
var totalNumber = attributes.totalNumber;
var totalNumber = this.getTotalNumber();
var start = pageSize * (number - 1) + 1;
var end = Math.min(number * pageSize, totalNumber);
......@@ -525,9 +539,14 @@
return dataSource.slice(start - 1, end);
},
// Get total number
getTotalNumber: function() {
return this.model.totalNumber || attributes.totalNumber || 1;
},
// Get total page
getTotalPage: function() {
return Math.ceil(attributes.totalNumber / attributes.pageSize);
return Math.ceil(this.getTotalNumber() / attributes.pageSize);
},
// Get locator
......@@ -573,7 +592,6 @@
// Parse dataSource
parseDataSource: function(dataSource, callback) {
var self = this;
var args = arguments;
if (Helpers.isObject(dataSource)) {
callback(attributes.dataSource = self.filterDataByLocator(dataSource));
......@@ -581,8 +599,8 @@
callback(attributes.dataSource = dataSource);
} else if ($.isFunction(dataSource)) {
attributes.dataSource(function(data) {
if ($.isFunction(data)) {
throwError('Unexpect parameter of the "done" Function.');
if (!Helpers.isArray(data)) {
throwError('The parameter of "done" Function should be an Array.');
}
self.parseDataSource.call(self, data, callback);
});
......@@ -592,7 +610,7 @@
}
callback(dataSource);
} else {
throwError('Unexpect data type of the "dataSource".');
throwError('Unexpected type of "dataSource".');
}
},
......@@ -624,7 +642,7 @@
var self = this;
var el = self.model.el;
// Go to page
// Go to specified page number
container.on(eventPrefix + 'go', function(event, pageNumber, done) {
pageNumber = parseInt($.trim(pageNumber));
......@@ -637,7 +655,7 @@
self.go(pageNumber, done);
});
// Page click
// Page number button click
el.delegate('.J-paginationjs-page', 'click', function(event) {
var current = $(event.currentTarget);
var pageNumber = $.trim(current.attr('data-num'));
......@@ -655,7 +673,7 @@
if (!attributes.pageLink) return false;
});
// Previous click
// Previous button click
el.delegate('.J-paginationjs-previous', 'click', function(event) {
var current = $(event.currentTarget);
var pageNumber = $.trim(current.attr('data-num'));
......@@ -673,7 +691,7 @@
if (!attributes.pageLink) return false;
});
// Next click
// Next button click
el.delegate('.J-paginationjs-next', 'click', function(event) {
var current = $(event.currentTarget);
var pageNumber = $.trim(current.attr('data-num'));
......@@ -763,17 +781,22 @@
});
// Whether to load the default page
var defaultPageNumber = attributes.pageNumber;
// Default pageNumber should be 1 when totalNumber is dynamic
if (self.isDynamicTotalNumber) {
defaultPageNumber = 1;
}
if (attributes.triggerPagingOnInit) {
container.trigger(eventPrefix + 'go', Math.min(attributes.pageNumber, self.model.totalPage));
container.trigger(eventPrefix + 'go', Math.min(defaultPageNumber, self.getTotalPage()));
}
}
};
// If initial
// Pagination has been initialized
if (container.data('pagination') && container.data('pagination').initialized === true) {
// Handling events
// Handle events
if ($.isNumeric(options)) {
// container.pagination(5)
// eg: container.pagination(5)
container.trigger.call(this, eventPrefix + 'go', options, arguments[1]);
return this;
} else if (typeof options === 'string') {
......@@ -801,28 +824,25 @@
}
// Get total page
case 'getTotalPage':
return container.data('pagination').model.totalPage;
// Get selected page data
return Math.ceil(container.data('pagination').model.totalNumber / container.data('pagination').model.pageSize);
// Get data of selected page
case 'getSelectedPageData':
return container.data('pagination').currentPageData;
// Whether pagination was be disabled
// Whether pagination has been disabled
case 'isDisabled':
return container.data('pagination').model.disabled === true;
default:
throwError('Pagination do not provide action: ' + options);
throwError('Unknown action: ' + options);
}
return this;
} else {
// Uninstall the old instance before initialize a new one
// Uninstall the old instance before initializing a new one
uninstallPlugin(container);
}
} else {
if (!Helpers.isObject(options)) throwError('Illegal options');
}
// Attributes
var attributes = $.extend({}, $.fn[pluginName].defaults, options);
// Check parameters
parameterChecker(attributes);
......@@ -841,7 +861,11 @@
// String | Function
//locator: 'data',
// Total entries, must be specified when the pagination is asynchronous
// Find totalNumber from remote response, the totalNumber will be ignored when totalNumberLocator is specified
// Function
//totalNumberLocator: function() {},
// Total entries
totalNumber: 1,
// Default page
......@@ -933,9 +957,8 @@
showLastOnEllipsisShow: true,
// Pagging callback
callback: function() {
}
// Paging callback
callback: function() {}
};
// Hook register
......@@ -1004,11 +1027,17 @@
}
if (typeof args.dataSource === 'string') {
if (typeof args.totalNumber === 'undefined') {
if (args.totalNumberLocator === undefined) {
if (args.totalNumber === undefined) {
throwError('"totalNumber" is required.');
} else if (!$.isNumeric(args.totalNumber)) {
throwError('"totalNumber" is incorrect. (Number)');
}
} else {
if (!$.isFunction(args.totalNumberLocator)) {
throwError('"totalNumberLocator" should be a Function.');
}
}
} else if (Helpers.isObject(args.dataSource)) {
if (typeof args.locator === 'undefined') {
throwError('"dataSource" is an Object, please specify "locator".');
......@@ -1016,6 +1045,10 @@
throwError('' + args.locator + ' is incorrect. (String | Function)');
}
}
if (args.formatResult !== undefined && !$.isFunction(args.formatResult)) {
throwError('"formatResult" should be a Function.');
}
}
// uninstall plugin
......@@ -1039,7 +1072,7 @@
return ( (tmp = typeof(object)) == "object" ? object == null && "null" || Object.prototype.toString.call(object).slice(8, -1) : tmp ).toLowerCase();
}
$.each(['Object', 'Array'], function(index, name) {
$.each(['Object', 'Array', 'String'], function(index, name) {
Helpers['is' + name] = function(object) {
return getObjectType(object) === name.toLowerCase();
};
......
/*
* pagination.js 2.0.8
* pagination.js 2.1.0
* A jQuery plugin to provide simple yet fully customisable pagination
* https://github.com/superRaytin/paginationjs
......@@ -8,4 +8,4 @@
* Copyright 2014-2100, superRaytin
* Released under the MIT license.
*/
!function(a,b){function c(a){throw new Error("Pagination: "+a)}function d(a){a.dataSource||c('"dataSource" is required.'),"string"==typeof a.dataSource?"undefined"==typeof a.totalNumber?c('"totalNumber" is required.'):b.isNumeric(a.totalNumber)||c('"totalNumber" is incorrect. (Number)'):j.isObject(a.dataSource)&&("undefined"==typeof a.locator?c('"dataSource" is an Object, please specify "locator".'):"string"==typeof a.locator||b.isFunction(a.locator)||c(""+a.locator+" is incorrect. (String | Function)"))}function e(a){var c=["go","previous","next","disable","enable","refresh","show","hide","destroy"];b.each(c,function(b,c){a.off(i+c)}),a.data("pagination",{}),b(".paginationjs",a).remove()}function f(a,b){return("object"==(b=typeof a)?null==a&&"null"||Object.prototype.toString.call(a).slice(8,-1):b).toLowerCase()}"undefined"==typeof b&&c("Pagination requires jQuery.");var g="pagination",h="addHook",i="__pagination-";b.fn.pagination&&(g="pagination2"),b.fn[g]=function(f){if("undefined"==typeof f)return this;var h=b(this),k={initialize:function(){var a=this;if(h.data("pagination")||h.data("pagination",{}),a.callHook("beforeInit")!==!1){h.data("pagination").initialized&&b(".paginationjs",h).remove(),a.disabled=!!m.disabled;var c=a.model={pageRange:m.pageRange,pageSize:m.pageSize};a.parseDataSource(m.dataSource,function(b){if(a.sync=j.isArray(b),a.sync&&(c.totalNumber=m.totalNumber=b.length),c.totalPage=a.getTotalPage(),!(m.hideWhenLessThanOnePage&&c.totalPage<=1)){var d=a.render(!0);m.className&&d.addClass(m.className),c.el=d,h["bottom"===m.position?"append":"prepend"](d),a.observer(),h.data("pagination").initialized=!0,a.callHook("afterInit",d)}})}},render:function(a){var c=this,d=c.model,e=d.el||b('<div class="paginationjs"></div>'),f=a!==!0;c.callHook("beforeRender",f);var g=d.pageNumber||m.pageNumber,h=m.pageRange,i=d.totalPage,j=g-h,k=g+h;return k>i&&(k=i,j=i-2*h,j=1>j?1:j),1>=j&&(j=1,k=Math.min(2*h+1,i)),e.html(c.createTemplate({currentPage:g,pageRange:h,totalPage:i,rangeStart:j,rangeEnd:k})),c.callHook("afterRender",f),e},createTemplate:function(a){var c,d,e=this,f=a.currentPage,g=a.totalPage,h=a.rangeStart,i=a.rangeEnd,j=m.totalNumber,k=m.showPrevious,l=m.showNext,n=m.showPageNumbers,o=m.showNavigator,p=m.showGoInput,q=m.showGoButton,r=m.pageLink,s=m.prevText,t=m.nextText,u=m.ellipsisText,v=m.goButtonText,w=m.classPrefix,x=m.activeClassName,y=m.disableClassName,z=m.ulClassName,A=b.isFunction(m.formatNavigator)?m.formatNavigator():m.formatNavigator,B=b.isFunction(m.formatGoInput)?m.formatGoInput():m.formatGoInput,C=b.isFunction(m.formatGoButton)?m.formatGoButton():m.formatGoButton,D=b.isFunction(m.autoHidePrevious)?m.autoHidePrevious():m.autoHidePrevious,E=b.isFunction(m.autoHideNext)?m.autoHideNext():m.autoHideNext,F=b.isFunction(m.header)?m.header():m.header,G=b.isFunction(m.footer)?m.footer():m.footer,H="",I='<input type="text" class="J-paginationjs-go-pagenumber">',J='<input type="button" class="J-paginationjs-go-button" value="'+v+'">';if(F&&(c=e.replaceVariables(F,{currentPage:f,totalPage:g,totalNumber:j}),H+=c),k||n||l){if(H+='<div class="paginationjs-pages">',H+=z?'<ul class="'+z+'">':"<ul>",k&&(1===f?D||(H+='<li class="'+w+"-prev "+y+'"><a>'+s+"</a></li>"):H+='<li class="'+w+'-prev J-paginationjs-previous" data-num="'+(f-1)+'" title="Previous page"><a href="'+r+'">'+s+"</a></li>"),n){if(3>=h)for(d=1;h>d;d++)H+=d==f?'<li class="'+w+"-page J-paginationjs-page "+x+'" data-num="'+d+'"><a>'+d+"</a></li>":'<li class="'+w+'-page J-paginationjs-page" data-num="'+d+'"><a href="'+r+'">'+d+"</a></li>";else m.showFirstOnEllipsisShow&&(H+='<li class="'+w+"-page "+w+'-first J-paginationjs-page" data-num="1"><a href="'+r+'">1</a></li>'),H+='<li class="'+w+"-ellipsis "+y+'"><a>'+u+"</a></li>";for(d=h;i>=d;d++)H+=d==f?'<li class="'+w+"-page J-paginationjs-page "+x+'" data-num="'+d+'"><a>'+d+"</a></li>":'<li class="'+w+'-page J-paginationjs-page" data-num="'+d+'"><a href="'+r+'">'+d+"</a></li>";if(i>=g-2)for(d=i+1;g>=d;d++)H+='<li class="'+w+'-page J-paginationjs-page" data-num="'+d+'"><a href="'+r+'">'+d+"</a></li>";else H+='<li class="'+w+"-ellipsis "+y+'"><a>'+u+"</a></li>",m.showLastOnEllipsisShow&&(H+='<li class="'+w+"-page "+w+'-last J-paginationjs-page" data-num="'+g+'"><a href="'+r+'">'+g+"</a></li>")}l&&(f==g?E||(H+='<li class="'+w+"-next "+y+'"><a>'+t+"</a></li>"):H+='<li class="'+w+'-next J-paginationjs-next" data-num="'+(f+1)+'" title="Next page"><a href="'+r+'">'+t+"</a></li>"),H+="</ul></div>"}return o&&A&&(c=e.replaceVariables(A,{currentPage:f,totalPage:g,totalNumber:j}),H+='<div class="'+w+'-nav J-paginationjs-nav">'+c+"</div>"),p&&B&&(c=e.replaceVariables(B,{currentPage:f,totalPage:g,totalNumber:j,input:I}),H+='<div class="'+w+'-go-input">'+c+"</div>"),q&&C&&(c=e.replaceVariables(C,{currentPage:f,totalPage:g,totalNumber:j,button:J}),H+='<div class="'+w+'-go-button">'+c+"</div>"),G&&(c=e.replaceVariables(G,{currentPage:f,totalPage:g,totalNumber:j}),H+=c),H},go:function(a,c){function d(a){if(e.callHook("beforePaging",g)===!1)return!1;if(f.direction="undefined"==typeof f.pageNumber?0:g>f.pageNumber?1:-1,f.pageNumber=g,e.render(),e.disabled&&!e.sync&&e.enable(),h.data("pagination").model=f,b.isFunction(m.formatResult)){var d=b.extend(!0,[],a);j.isArray(a=m.formatResult(d))||(a=d)}h.data("pagination").currentPageData=a,e.doCallback(a,c),e.callHook("afterPaging",g),1==g&&e.callHook("afterIsFirstPage"),g==f.totalPage&&e.callHook("afterIsLastPage")}var e=this,f=e.model;if(!e.disabled){var g=a,i=m.pageSize,k=f.totalPage;if(g=parseInt(g),!(!g||1>g||g>k)){if(e.sync)return void d(e.getDataSegment(g));var l={},n=m.alias||{};l[n.pageSize?n.pageSize:"pageSize"]=i,l[n.pageNumber?n.pageNumber:"pageNumber"]=g;var o={type:"get",cache:!1,data:{},contentType:"application/x-www-form-urlencoded; charset=UTF-8",dataType:"json",async:!0};b.extend(!0,o,m.ajax),b.extend(o.data||{},l),o.url=m.dataSource,o.success=function(a){d(e.filterDataByLocator(a))},o.error=function(a,b,c){m.formatAjaxError&&m.formatAjaxError(a,b,c),e.enable()},e.disable(),b.ajax(o)}}},doCallback:function(a,c){var d=this,e=d.model;b.isFunction(c)?c(a,e):b.isFunction(m.callback)&&m.callback(a,e)},destroy:function(){this.callHook("beforeDestroy")!==!1&&(this.model.el.remove(),h.off(),b("#paginationjs-style").remove(),this.callHook("afterDestroy"))},previous:function(a){this.go(this.model.pageNumber-1,a)},next:function(a){this.go(this.model.pageNumber+1,a)},disable:function(){var a=this,b=a.sync?"sync":"async";a.callHook("beforeDisable",b)!==!1&&(a.disabled=!0,a.model.disabled=!0,a.callHook("afterDisable",b))},enable:function(){var a=this,b=a.sync?"sync":"async";a.callHook("beforeEnable",b)!==!1&&(a.disabled=!1,a.model.disabled=!1,a.callHook("afterEnable",b))},refresh:function(a){this.go(this.model.pageNumber,a)},show:function(){var a=this;a.model.el.is(":visible")||a.model.el.show()},hide:function(){var a=this;a.model.el.is(":visible")&&a.model.el.hide()},replaceVariables:function(a,b){var c;for(var d in b){var e=b[d],f=new RegExp("<%=\\s*"+d+"\\s*%>","img");c=(c||a).replace(f,e)}return c},getDataSegment:function(a){var b=m.pageSize,c=m.dataSource,d=m.totalNumber,e=b*(a-1)+1,f=Math.min(a*b,d);return c.slice(e-1,f)},getTotalPage:function(){return Math.ceil(m.totalNumber/m.pageSize)},getLocator:function(a){var d;return"string"==typeof a?d=a:b.isFunction(a)?d=a():c('"locator" is incorrect. (String | Function)'),d},filterDataByLocator:function(a){var d,e=this.getLocator(m.locator);if(j.isObject(a)){try{b.each(e.split("."),function(b,c){d=(d?d:a)[c]})}catch(f){}d?j.isArray(d)||c("dataSource."+e+" must be an Array."):c("dataSource."+e+" is undefined.")}return d||a},parseDataSource:function(a,d){{var e=this;arguments}j.isObject(a)?d(m.dataSource=e.filterDataByLocator(a)):j.isArray(a)?d(m.dataSource=a):b.isFunction(a)?m.dataSource(function(a){b.isFunction(a)&&c('Unexpect parameter of the "done" Function.'),e.parseDataSource.call(e,a,d)}):"string"==typeof a?(/^https?|file:/.test(a)&&(m.ajaxDataType="jsonp"),d(a)):c('Unexpect data type of the "dataSource".')},callHook:function(c){var d,e=h.data("pagination"),f=Array.prototype.slice.apply(arguments);return f.shift(),m[c]&&b.isFunction(m[c])&&m[c].apply(a,f)===!1&&(d=!1),e.hooks&&e.hooks[c]&&b.each(e.hooks[c],function(b,c){c.apply(a,f)===!1&&(d=!1)}),d!==!1},observer:function(){var a=this,d=a.model.el;h.on(i+"go",function(d,e,f){e=parseInt(b.trim(e)),e&&(b.isNumeric(e)||c('"pageNumber" is incorrect. (Number)'),a.go(e,f))}),d.delegate(".J-paginationjs-page","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));return!e||d.hasClass(m.disableClassName)||d.hasClass(m.activeClassName)?void 0:a.callHook("beforePageOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterPageOnClick",c,e),m.pageLink?void 0:!1)}),d.delegate(".J-paginationjs-previous","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));return e&&!d.hasClass(m.disableClassName)?a.callHook("beforePreviousOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterPreviousOnClick",c,e),m.pageLink?void 0:!1):void 0}),d.delegate(".J-paginationjs-next","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));return e&&!d.hasClass(m.disableClassName)?a.callHook("beforeNextOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterNextOnClick",c,e),m.pageLink?void 0:!1):void 0}),d.delegate(".J-paginationjs-go-button","click",function(c){var e=b(".J-paginationjs-go-pagenumber",d).val();return a.callHook("beforeGoButtonOnClick",c,e)===!1?!1:(h.trigger(i+"go",e),void a.callHook("afterGoButtonOnClick",c,e))}),d.delegate(".J-paginationjs-go-pagenumber","keyup",function(c){if(13===c.which){var e=b(c.currentTarget).val();if(a.callHook("beforeGoInputOnEnter",c,e)===!1)return!1;h.trigger(i+"go",e),b(".J-paginationjs-go-pagenumber",d).focus(),a.callHook("afterGoInputOnEnter",c,e)}}),h.on(i+"previous",function(b,c){a.previous(c)}),h.on(i+"next",function(b,c){a.next(c)}),h.on(i+"disable",function(){a.disable()}),h.on(i+"enable",function(){a.enable()}),h.on(i+"refresh",function(b,c){a.refresh(c)}),h.on(i+"show",function(){a.show()}),h.on(i+"hide",function(){a.hide()}),h.on(i+"destroy",function(){a.destroy()}),m.triggerPagingOnInit&&h.trigger(i+"go",Math.min(m.pageNumber,a.model.totalPage))}};if(h.data("pagination")&&h.data("pagination").initialized===!0){if(b.isNumeric(f))return h.trigger.call(this,i+"go",f,arguments[1]),this;if("string"==typeof f){var l=Array.prototype.slice.apply(arguments);switch(l[0]=i+l[0],f){case"previous":case"next":case"go":case"disable":case"enable":case"refresh":case"show":case"hide":case"destroy":h.trigger.apply(this,l);break;case"getSelectedPageNum":return h.data("pagination").model?h.data("pagination").model.pageNumber:h.data("pagination").attributes.pageNumber;case"getTotalPage":return h.data("pagination").model.totalPage;case"getSelectedPageData":return h.data("pagination").currentPageData;case"isDisabled":return h.data("pagination").model.disabled===!0;default:c("Pagination do not provide action: "+f)}return this}e(h)}else j.isObject(f)||c("Illegal options");var m=b.extend({},b.fn[g].defaults,f);return d(m),k.initialize(),this},b.fn[g].defaults={totalNumber:1,pageNumber:1,pageSize:10,pageRange:2,showPrevious:!0,showNext:!0,showPageNumbers:!0,showNavigator:!1,showGoInput:!1,showGoButton:!1,pageLink:"",prevText:"&laquo;",nextText:"&raquo;",ellipsisText:"...",goButtonText:"Go",classPrefix:"paginationjs",activeClassName:"active",disableClassName:"disabled",inlineStyle:!0,formatNavigator:"<%= currentPage %> / <%= totalPage %>",formatGoInput:"<%= input %>",formatGoButton:"<%= button %>",position:"bottom",autoHidePrevious:!1,autoHideNext:!1,triggerPagingOnInit:!0,hideWhenLessThanOnePage:!1,showFirstOnEllipsisShow:!0,showLastOnEllipsisShow:!0,callback:function(){}},b.fn[h]=function(a,d){arguments.length<2&&c("Missing argument."),b.isFunction(d)||c("callback must be a function.");var e=b(this),f=e.data("pagination");f||(e.data("pagination",{}),f=e.data("pagination")),!f.hooks&&(f.hooks={}),f.hooks[a]=f.hooks[a]||[],f.hooks[a].push(d)},b[g]=function(a,d){arguments.length<2&&c("Requires two parameters.");var e;return e="string"!=typeof a&&a instanceof jQuery?a:b(a),e.length?(e.pagination(d),e):void 0};var j={};b.each(["Object","Array"],function(a,b){j["is"+b]=function(a){return f(a)===b.toLowerCase()}}),"function"==typeof define&&define.amd&&define(function(){return b})}(this,window.jQuery);
\ No newline at end of file
!function(a,b){function c(a){throw new Error("Pagination: "+a)}function d(a){a.dataSource||c('"dataSource" is required.'),"string"==typeof a.dataSource?void 0===a.totalNumberLocator?void 0===a.totalNumber?c('"totalNumber" is required.'):b.isNumeric(a.totalNumber)||c('"totalNumber" is incorrect. (Number)'):b.isFunction(a.totalNumberLocator)||c('"totalNumberLocator" should be a Function.'):j.isObject(a.dataSource)&&("undefined"==typeof a.locator?c('"dataSource" is an Object, please specify "locator".'):"string"==typeof a.locator||b.isFunction(a.locator)||c(""+a.locator+" is incorrect. (String | Function)")),void 0===a.formatResult||b.isFunction(a.formatResult)||c('"formatResult" should be a Function.')}function e(a){var c=["go","previous","next","disable","enable","refresh","show","hide","destroy"];b.each(c,function(b,c){a.off(i+c)}),a.data("pagination",{}),b(".paginationjs",a).remove()}function f(a,b){return("object"==(b=typeof a)?null==a&&"null"||Object.prototype.toString.call(a).slice(8,-1):b).toLowerCase()}"undefined"==typeof b&&c("Pagination requires jQuery.");var g="pagination",h="addHook",i="__pagination-";b.fn.pagination&&(g="pagination2"),b.fn[g]=function(f){if("undefined"==typeof f)return this;var h=b(this),k=b.extend({},b.fn[g].defaults,f),l={initialize:function(){var a=this;if(h.data("pagination")||h.data("pagination",{}),a.callHook("beforeInit")!==!1){h.data("pagination").initialized&&b(".paginationjs",h).remove(),a.disabled=!!k.disabled;var c=a.model={pageRange:k.pageRange,pageSize:k.pageSize};a.parseDataSource(k.dataSource,function(b){if(a.isAsync=j.isString(b),j.isArray(b)&&(c.totalNumber=k.totalNumber=b.length),a.isDynamicTotalNumber=a.isAsync&&k.totalNumberLocator,!(k.hideWhenLessThanOnePage&&a.getTotalPage()<=1)){var d=a.render(!0);k.className&&d.addClass(k.className),c.el=d,h["bottom"===k.position?"append":"prepend"](d),a.observer(),h.data("pagination").initialized=!0,a.callHook("afterInit",d)}})}},render:function(a){var c=this,d=c.model,e=d.el||b('<div class="paginationjs"></div>'),f=a!==!0;c.callHook("beforeRender",f);var g=d.pageNumber||k.pageNumber,h=k.pageRange,i=c.getTotalPage(),j=g-h,l=g+h;return l>i&&(l=i,j=i-2*h,j=1>j?1:j),1>=j&&(j=1,l=Math.min(2*h+1,i)),e.html(c.createTemplate({currentPage:g,pageRange:h,rangeStart:j,rangeEnd:l})),c.callHook("afterRender",f),e},createTemplate:function(a){var c,d,e=this,f=a.currentPage,g=e.getTotalPage(),h=a.rangeStart,i=a.rangeEnd,j=e.getTotalNumber(),l=k.showPrevious,m=k.showNext,n=k.showPageNumbers,o=k.showNavigator,p=k.showGoInput,q=k.showGoButton,r=k.pageLink,s=k.prevText,t=k.nextText,u=k.ellipsisText,v=k.goButtonText,w=k.classPrefix,x=k.activeClassName,y=k.disableClassName,z=k.ulClassName,A=b.isFunction(k.formatNavigator)?k.formatNavigator():k.formatNavigator,B=b.isFunction(k.formatGoInput)?k.formatGoInput():k.formatGoInput,C=b.isFunction(k.formatGoButton)?k.formatGoButton():k.formatGoButton,D=b.isFunction(k.autoHidePrevious)?k.autoHidePrevious():k.autoHidePrevious,E=b.isFunction(k.autoHideNext)?k.autoHideNext():k.autoHideNext,F=b.isFunction(k.header)?k.header():k.header,G=b.isFunction(k.footer)?k.footer():k.footer,H="",I='<input type="text" class="J-paginationjs-go-pagenumber">',J='<input type="button" class="J-paginationjs-go-button" value="'+v+'">';if(F&&(c=e.replaceVariables(F,{currentPage:f,totalPage:g,totalNumber:j}),H+=c),l||n||m){if(H+='<div class="paginationjs-pages">',H+=z?'<ul class="'+z+'">':"<ul>",l&&(1===f?D||(H+='<li class="'+w+"-prev "+y+'"><a>'+s+"</a></li>"):H+='<li class="'+w+'-prev J-paginationjs-previous" data-num="'+(f-1)+'" title="Previous page"><a href="'+r+'">'+s+"</a></li>"),n){if(3>=h)for(d=1;h>d;d++)H+=d==f?'<li class="'+w+"-page J-paginationjs-page "+x+'" data-num="'+d+'"><a>'+d+"</a></li>":'<li class="'+w+'-page J-paginationjs-page" data-num="'+d+'"><a href="'+r+'">'+d+"</a></li>";else k.showFirstOnEllipsisShow&&(H+='<li class="'+w+"-page "+w+'-first J-paginationjs-page" data-num="1"><a href="'+r+'">1</a></li>'),H+='<li class="'+w+"-ellipsis "+y+'"><a>'+u+"</a></li>";for(d=h;i>=d;d++)H+=d==f?'<li class="'+w+"-page J-paginationjs-page "+x+'" data-num="'+d+'"><a>'+d+"</a></li>":'<li class="'+w+'-page J-paginationjs-page" data-num="'+d+'"><a href="'+r+'">'+d+"</a></li>";if(i>=g-2)for(d=i+1;g>=d;d++)H+='<li class="'+w+'-page J-paginationjs-page" data-num="'+d+'"><a href="'+r+'">'+d+"</a></li>";else H+='<li class="'+w+"-ellipsis "+y+'"><a>'+u+"</a></li>",k.showLastOnEllipsisShow&&(H+='<li class="'+w+"-page "+w+'-last J-paginationjs-page" data-num="'+g+'"><a href="'+r+'">'+g+"</a></li>")}m&&(f==g?E||(H+='<li class="'+w+"-next "+y+'"><a>'+t+"</a></li>"):H+='<li class="'+w+'-next J-paginationjs-next" data-num="'+(f+1)+'" title="Next page"><a href="'+r+'">'+t+"</a></li>"),H+="</ul></div>"}return o&&A&&(c=e.replaceVariables(A,{currentPage:f,totalPage:g,totalNumber:j}),H+='<div class="'+w+'-nav J-paginationjs-nav">'+c+"</div>"),p&&B&&(c=e.replaceVariables(B,{currentPage:f,totalPage:g,totalNumber:j,input:I}),H+='<div class="'+w+'-go-input">'+c+"</div>"),q&&C&&(c=e.replaceVariables(C,{currentPage:f,totalPage:g,totalNumber:j,button:J}),H+='<div class="'+w+'-go-button">'+c+"</div>"),G&&(c=e.replaceVariables(G,{currentPage:f,totalPage:g,totalNumber:j}),H+=c),H},findTotalNumberFromRemoteResponse:function(a){var b=this;b.model.totalNumber=k.totalNumberLocator(a)},go:function(a,c){function d(a){if(e.callHook("beforePaging",g)===!1)return!1;if(f.direction="undefined"==typeof f.pageNumber?0:g>f.pageNumber?1:-1,f.pageNumber=g,e.render(),e.disabled&&e.isAsync&&e.enable(),h.data("pagination").model=f,k.formatResult){var d=b.extend(!0,[],a);j.isArray(a=k.formatResult(d))||(a=d)}h.data("pagination").currentPageData=a,e.doCallback(a,c),e.callHook("afterPaging",g),1==g&&e.callHook("afterIsFirstPage"),g==e.getTotalPage()&&e.callHook("afterIsLastPage")}var e=this,f=e.model;if(!e.disabled){var g=a;if(g=parseInt(g),g&&!(1>g)){var i=k.pageSize,l=e.getTotalNumber(),m=e.getTotalPage();if(!(l&&g>m)){if(!e.isAsync)return void d(e.getDataFragment(g));var n={},o=k.alias||{};n[o.pageSize?o.pageSize:"pageSize"]=i,n[o.pageNumber?o.pageNumber:"pageNumber"]=g;var p={type:"get",cache:!1,data:{},contentType:"application/x-www-form-urlencoded; charset=UTF-8",dataType:"json",async:!0};b.extend(!0,p,k.ajax),b.extend(p.data,n),p.url=k.dataSource,p.success=function(a){e.isDynamicTotalNumber?e.findTotalNumberFromRemoteResponse(a):e.model.totalNumber=k.totalNumber,d(e.filterDataByLocator(a))},p.error=function(a,b,c){k.formatAjaxError&&k.formatAjaxError(a,b,c),e.enable()},e.disable(),b.ajax(p)}}}},doCallback:function(a,c){var d=this,e=d.model;b.isFunction(c)?c(a,e):b.isFunction(k.callback)&&k.callback(a,e)},destroy:function(){this.callHook("beforeDestroy")!==!1&&(this.model.el.remove(),h.off(),b("#paginationjs-style").remove(),this.callHook("afterDestroy"))},previous:function(a){this.go(this.model.pageNumber-1,a)},next:function(a){this.go(this.model.pageNumber+1,a)},disable:function(){var a=this,b=a.isAsync?"async":"sync";a.callHook("beforeDisable",b)!==!1&&(a.disabled=!0,a.model.disabled=!0,a.callHook("afterDisable",b))},enable:function(){var a=this,b=a.isAsync?"async":"sync";a.callHook("beforeEnable",b)!==!1&&(a.disabled=!1,a.model.disabled=!1,a.callHook("afterEnable",b))},refresh:function(a){this.go(this.model.pageNumber,a)},show:function(){var a=this;a.model.el.is(":visible")||a.model.el.show()},hide:function(){var a=this;a.model.el.is(":visible")&&a.model.el.hide()},replaceVariables:function(a,b){var c;for(var d in b){var e=b[d],f=new RegExp("<%=\\s*"+d+"\\s*%>","img");c=(c||a).replace(f,e)}return c},getDataFragment:function(a){var b=k.pageSize,c=k.dataSource,d=this.getTotalNumber(),e=b*(a-1)+1,f=Math.min(a*b,d);return c.slice(e-1,f)},getTotalNumber:function(){return this.model.totalNumber||k.totalNumber||1},getTotalPage:function(){return Math.ceil(this.getTotalNumber()/k.pageSize)},getLocator:function(a){var d;return"string"==typeof a?d=a:b.isFunction(a)?d=a():c('"locator" is incorrect. (String | Function)'),d},filterDataByLocator:function(a){var d,e=this.getLocator(k.locator);if(j.isObject(a)){try{b.each(e.split("."),function(b,c){d=(d?d:a)[c]})}catch(f){}d?j.isArray(d)||c("dataSource."+e+" must be an Array."):c("dataSource."+e+" is undefined.")}return d||a},parseDataSource:function(a,d){var e=this;j.isObject(a)?d(k.dataSource=e.filterDataByLocator(a)):j.isArray(a)?d(k.dataSource=a):b.isFunction(a)?k.dataSource(function(a){j.isArray(a)||c('The parameter of "done" Function should be an Array.'),e.parseDataSource.call(e,a,d)}):"string"==typeof a?(/^https?|file:/.test(a)&&(k.ajaxDataType="jsonp"),d(a)):c('Unexpected type of "dataSource".')},callHook:function(c){var d,e=h.data("pagination"),f=Array.prototype.slice.apply(arguments);return f.shift(),k[c]&&b.isFunction(k[c])&&k[c].apply(a,f)===!1&&(d=!1),e.hooks&&e.hooks[c]&&b.each(e.hooks[c],function(b,c){c.apply(a,f)===!1&&(d=!1)}),d!==!1},observer:function(){var a=this,d=a.model.el;h.on(i+"go",function(d,e,f){e=parseInt(b.trim(e)),e&&(b.isNumeric(e)||c('"pageNumber" is incorrect. (Number)'),a.go(e,f))}),d.delegate(".J-paginationjs-page","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));return!e||d.hasClass(k.disableClassName)||d.hasClass(k.activeClassName)?void 0:a.callHook("beforePageOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterPageOnClick",c,e),k.pageLink?void 0:!1)}),d.delegate(".J-paginationjs-previous","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));return e&&!d.hasClass(k.disableClassName)?a.callHook("beforePreviousOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterPreviousOnClick",c,e),k.pageLink?void 0:!1):void 0}),d.delegate(".J-paginationjs-next","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));return e&&!d.hasClass(k.disableClassName)?a.callHook("beforeNextOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterNextOnClick",c,e),k.pageLink?void 0:!1):void 0}),d.delegate(".J-paginationjs-go-button","click",function(c){var e=b(".J-paginationjs-go-pagenumber",d).val();return a.callHook("beforeGoButtonOnClick",c,e)===!1?!1:(h.trigger(i+"go",e),void a.callHook("afterGoButtonOnClick",c,e))}),d.delegate(".J-paginationjs-go-pagenumber","keyup",function(c){if(13===c.which){var e=b(c.currentTarget).val();if(a.callHook("beforeGoInputOnEnter",c,e)===!1)return!1;h.trigger(i+"go",e),b(".J-paginationjs-go-pagenumber",d).focus(),a.callHook("afterGoInputOnEnter",c,e)}}),h.on(i+"previous",function(b,c){a.previous(c)}),h.on(i+"next",function(b,c){a.next(c)}),h.on(i+"disable",function(){a.disable()}),h.on(i+"enable",function(){a.enable()}),h.on(i+"refresh",function(b,c){a.refresh(c)}),h.on(i+"show",function(){a.show()}),h.on(i+"hide",function(){a.hide()}),h.on(i+"destroy",function(){a.destroy()});var e=k.pageNumber;a.isDynamicTotalNumber&&(e=1),k.triggerPagingOnInit&&h.trigger(i+"go",Math.min(e,a.getTotalPage()))}};if(h.data("pagination")&&h.data("pagination").initialized===!0){if(b.isNumeric(f))return h.trigger.call(this,i+"go",f,arguments[1]),this;if("string"==typeof f){var m=Array.prototype.slice.apply(arguments);switch(m[0]=i+m[0],f){case"previous":case"next":case"go":case"disable":case"enable":case"refresh":case"show":case"hide":case"destroy":h.trigger.apply(this,m);break;case"getSelectedPageNum":return h.data("pagination").model?h.data("pagination").model.pageNumber:h.data("pagination").attributes.pageNumber;case"getTotalPage":return Math.ceil(h.data("pagination").model.totalNumber/h.data("pagination").model.pageSize);case"getSelectedPageData":return h.data("pagination").currentPageData;case"isDisabled":return h.data("pagination").model.disabled===!0;default:c("Unknown action: "+f)}return this}e(h)}else j.isObject(f)||c("Illegal options");return d(k),l.initialize(),this},b.fn[g].defaults={totalNumber:1,pageNumber:1,pageSize:10,pageRange:2,showPrevious:!0,showNext:!0,showPageNumbers:!0,showNavigator:!1,showGoInput:!1,showGoButton:!1,pageLink:"",prevText:"&laquo;",nextText:"&raquo;",ellipsisText:"...",goButtonText:"Go",classPrefix:"paginationjs",activeClassName:"active",disableClassName:"disabled",inlineStyle:!0,formatNavigator:"<%= currentPage %> / <%= totalPage %>",formatGoInput:"<%= input %>",formatGoButton:"<%= button %>",position:"bottom",autoHidePrevious:!1,autoHideNext:!1,triggerPagingOnInit:!0,hideWhenLessThanOnePage:!1,showFirstOnEllipsisShow:!0,showLastOnEllipsisShow:!0,callback:function(){}},b.fn[h]=function(a,d){arguments.length<2&&c("Missing argument."),b.isFunction(d)||c("callback must be a function.");var e=b(this),f=e.data("pagination");f||(e.data("pagination",{}),f=e.data("pagination")),!f.hooks&&(f.hooks={}),f.hooks[a]=f.hooks[a]||[],f.hooks[a].push(d)},b[g]=function(a,d){arguments.length<2&&c("Requires two parameters.");var e;return e="string"!=typeof a&&a instanceof jQuery?a:b(a),e.length?(e.pagination(d),e):void 0};var j={};b.each(["Object","Array","String"],function(a,b){j["is"+b]=function(a){return f(a)===b.toLowerCase()}}),"function"==typeof define&&define.amd&&define(function(){return b})}(this,window.jQuery);
\ No newline at end of file
......@@ -101,6 +101,13 @@
### totalNumber <em>number (default `1`)</em>
条目总数,异步分页时必填,模拟分页时为数组的长度
### totalNumberLocator <em>function(response)</em>
远程获取 `totalNumber`,用于异步分页,只在 `dataSource` 为字符串时可用
注意: 指定 `totalNumberLocator` 后将会忽略 `totalNumber`
查看 [demo](/index.html#totalNumber_locator)
### pageNumber <em>number (default `1`)</em>
指定初始化时加载哪一页的数据
......@@ -127,7 +134,6 @@ pagination 对象包含以下属性值:
pageNumber | number | 当前页码
pageRange | number | 页码范围
pageSize | number | 每页条目数
totalPage | number | 总页数
totalNumber | number | 总条目数
el | jQueryObject | 分页实例的容器
direction | number | 分页方向,往前翻页时值为 -1,往后翻为 1,初始化时为 0
......@@ -187,12 +193,12 @@ direction | number | 分页方向,往前翻页时值为 -1,往后翻为 1,
### autoHidePrevious <em>boolean (default `false`)</em>
是否在当前显示为第一页时隐藏 '上一页' 按钮
See [demo](/index.html#auto_hide)
查看 [demo](/index.html#auto_hide)
### autoHideNext <em>boolean (default `false`)</em>
是否在当前显示为最后一页时隐藏 '下一页' 按钮
See [demo](/index.html#auto_hide)
查看 [demo](/index.html#auto_hide)
## Style
......@@ -234,7 +240,7 @@ See [demo](/index.html#auto_hide)
- `totalPage` 总页数
- `totalNumber` 总条目数
See [demo](/index.html#format_navigator)
查看 [demo](/index.html#format_navigator)
### formatGoInput <em>string | function</em>
跳转输入框格式化模板,默认为 `<%= input %>`,也可提供一个自定义函数,返回一个这样的字符串
......@@ -248,7 +254,7 @@ See [demo](/index.html#format_navigator)
- `totalPage` 总页数
- `totalNumber` 总条目数
See [demo](/index.html#format_go_input)
查看 [demo](/index.html#format_go_input)
### formatGoButton <em>string | function</em>
跳转按钮格式化模板,默认为 `<%= button %>`,也可提供一个自定义函数,返回一个这样的字符串
......@@ -290,7 +296,7 @@ See [demo](/index.html#format_go_input)
可以返回一个处理后的数组,或者直接在传过来的 `data` 数组里处理
See [demo](/index.html#formatResult)
查看 [demo](/index.html#formatResult)
### formatAjaxError <em>function(jqXHR, textStatus, errorThrown)</em>
提供一个自定义函数,用于渲染错误信息,默认为空
......
......@@ -102,6 +102,13 @@ Total entries, This option must be specified when pagination is asynchronous.
Note: This option only has effect in Pagination constructor and only if dataSource option is a URL.
### totalNumberLocator <em>function(response)</em>
Find `totalNumber` from remote response, only available when `dataSource` is a string.
Note: Specify `totalNumberLocator` will ignore the `totalNumber` option.
See [demo](/index.html#totalNumber_locator)
### pageNumber <em>number (default `1`)</em>
Specify the page number when initializing.
......
......@@ -15,7 +15,7 @@
}
.data-container {
margin-top: 5px;
margin-top: 20px;
}
.data-container ul {
......@@ -37,14 +37,16 @@
<section>
<div class="data-container"></div>
<div id="pagination-demo1"></div>
<div class="data-container"></div>
<div id="pagination-demo2"></div>
</section>
</div>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="../src/pagination.js"></script>
<script>
$(function () {
function createDemo(name) {
$(function() {
(function(name) {
var container = $('#pagination-' + name);
var sources = function () {
var result = [];
......@@ -84,12 +86,35 @@
window.console && console.log('beforePageOnClick...');
//return false
});
})('demo1');
return container;
(function(name) {
var container = $('#pagination-' + name);
container.pagination({
dataSource: 'https://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?',
locator: 'items',
totalNumber: 120,
pageSize: 20,
ajax: {
beforeSend: function() {
container.prev().html('Loading data from flickr.com ...');
}
},
callback: function(response, pagination) {
window.console && console.log(22, response, pagination);
var dataHtml = '<ul>';
createDemo('demo1');
$.each(response, function (index, item) {
dataHtml += '<li>' + item.title + '</li>';
});
dataHtml += '</ul>';
container.prev().html(dataHtml);
}
})
})('demo2');
})
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册