93 lines
3.2 KiB
JavaScript
93 lines
3.2 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); |