93 lines
3.4 KiB
JavaScript
93 lines
3.4 KiB
JavaScript
/**************************************************************************************
|
|
* jQuery Paging 0.1.7
|
|
* by composite (ukjinplant@msn.com)
|
|
* http://composite.tistory.com
|
|
* This project licensed under a MIT License.
|
|
**************************************************************************************/;
|
|
(function ($) {
|
|
//default properties.
|
|
var a = /a/i, defs = {
|
|
liitem: 'li', item: 'a', next: '[>{5}]', prev: '[{4}<]', format: '[{0}]',
|
|
itemClass: '', appendhtml: '', sideClass: 'paging-side', prevClass: 'paging-side',
|
|
itemCurrent: 'active', length: 10, max: 1, current: 1, append: false
|
|
, href: '#{0}', event: true, first: '[1<<]', last: '[>>{6}]'
|
|
}, InStr = function (strSearch, charSearchFor) {
|
|
return strSearch.indexOf(charSearchFor);
|
|
}, format = function (str) {
|
|
var arg = arguments;
|
|
return str.replace(/\{(\d+)\}/g, function (m, d) {
|
|
if (+d < 0) return m;
|
|
else return arg[+d + 1] || "";
|
|
});
|
|
}, item, make = function (op, page, cls, str) {
|
|
var is_current = false;
|
|
if (InStr(cls, op.itemCurrent) > -1) {
|
|
item = document.createElement("strong");
|
|
is_current = true;
|
|
} else {
|
|
item = document.createElement(op.item);
|
|
}
|
|
item.className = cls;
|
|
item.innerHTML = format(str, page, op.length, op.start, op.end, op.start - 1, op.end + 1, op.max);
|
|
if (a.test(op.item)) item.href = format(op.href, page);
|
|
if (op.event) {
|
|
$(item).bind('click', function (e) {
|
|
var fired = true;
|
|
if ($.isFunction(op.onclick)) fired = op.onclick.call(item, e, page, op);
|
|
if (fired == undefined || fired)
|
|
op.origin.paging($.extend({}, op, { current: page }));
|
|
return fired;
|
|
});
|
|
/*
|
|
$liitem= $(document.createElement(op.liitem));
|
|
$liitem.addClass(cls);
|
|
$liitem.append($(item));
|
|
*/
|
|
if (op.appendhtml) {
|
|
$(item).append(op.appendhtml);
|
|
}
|
|
$(item).appendTo(op.origin);
|
|
if (is_current) {
|
|
$(item).prepend('<span class="sound_only">열린</span>');
|
|
} else {
|
|
(op.origin).append('\n');
|
|
}
|
|
//bind event for each elements.
|
|
var ev = 'on';
|
|
switch (str) {
|
|
case op.prev: ev += 'prev'; break;
|
|
case op.next: ev += 'next'; break;
|
|
case op.first: ev += 'first'; break;
|
|
case op.last: ev += 'last'; break;
|
|
default: ev += 'item'; break;
|
|
}
|
|
if ($.isFunction(op[ev])) op[ev].call(item, page, op);
|
|
}
|
|
return item;
|
|
};
|
|
|
|
$.fn.paging = function (op) {
|
|
op = $.extend({ origin: this }, defs, op || {}); this.html('');
|
|
if (op.max < 1) op.max = 1; if (op.current < 1) op.current = 1;
|
|
op.start = Math.floor((op.current - 1) / op.length) * op.length + 1;
|
|
op.end = op.start - 1 + op.length;
|
|
if (op.end > op.max) op.end = op.max;
|
|
if (!op.append) this.empty();
|
|
//prev button
|
|
if (op.current > op.length) {
|
|
//if(op.first!==false) make(op,1,op.sideClass,op.first);
|
|
make(op, op.start - 1, op.prevClass, op.prev);
|
|
}
|
|
//pages button
|
|
for (var i = op.start; i <= op.end; i++) {
|
|
make(op, i, op.itemClass + (i == op.current ? ' ' + op.itemCurrent : ''), op.format);
|
|
}
|
|
//next button
|
|
if (op.current <= Math.floor(op.max / op.length) * op.length) {
|
|
if (op.max > op.length && op.max > op.end) { make(op, op.end + 1, op.sideClass, op.next); }
|
|
//if(op.last!==false) make(op,op.max,op.sideClass,op.last);
|
|
}
|
|
|
|
//last button
|
|
};
|
|
})(jQuery);
|