(function($){ var ipager = function(opts){ if (!(this instanceof ipager)) return new ipager(opts); var pp = this; /* * 默认参数 * all_count:总条数 * current_index:数据的序号,从1开始 * all_page:总页码 * site_id:站点id * channel_id:频道id * haschild:是否需要子节点稿件 0-不需要,1-需要 * page_no:页码,接口取值从0开始 * page_size:每页条数 * state:稿件状态,默认30(已发) * pager_mode:0-不需要页码按钮,1-需要页码按钮,第2页才开始从接口获取数据;2-需要页码按钮,第1页开始从接口获取数据;3-点击加载更多模式;4-点击加载更多模式,第1页从接口获取 * button_container_id:分页按钮容器id * list_container_id:分页数据容器id,默认为pagelist * template_container_id:模板容器id,默认为pagetemplate * isclear:是否清空分页数据容器,默认为true清空 * server:接口域名 * apiurl:接口地址 * apifun:接口参数获取方法 * pb_first_text:首页按钮文字 * pb_pre_text:上一页按钮文字 * pb_next_text:下一页按钮文字 * pb_last_text:尾页按钮文字 * pb_more_text:加载更多按钮文字 * pb_confirm_text:跳转页数按钮文字 * pb_no_more_text:没有更多提示文字 * success_call_back:回调函数名 * only_client:是否只调用app稿件 * skip_index:分页时跳过的条数 */ pp.options = { all_count:-1, current_index:0, all_page:0, site_id:0, channel_id:0, haschild:0, page_no:0, page_size:10, state:30, pager_mode:1, button_container_id:'', list_container_id:'pagelist', template_container_id:'pagetemplate', isclear:true, server:'https://icms3api.changsha.cn', apiurl:'/default.php?secu=public&mod=interface&a=news_list', apifun:function(){return getapidata()}, pb_first_text:'|<', pb_pre_text:'<<', pb_next_text:'>>', pb_last_text:'>|', pb_more_text:'加载更多', pb_confirm_text:'转到', pb_no_more_text:'没有更多了', success_call_back:'', only_client:0, skip_index:0, } //跳转页码 pp.gotopage = function(obj,page_no){ if($(obj).hasclass('disabled_button') || $(obj).hasclass('current_page')){ return false; } pp.options.page_no = page_no; if(pp.options.page_no == 0 || (pp.options.page_no + 1) == pp.options.all_page){ getpagelistdata(false,true); }else{ getpagelistdata(); } } //跳转上一页码 pp.gotoprepage = function(obj){ if($(obj).hasclass('disabled_button')){ return false; } pp.options.page_no--; getpagelistdata(); } //跳转下一页码 pp.gotonextpage = function(obj){ if($(obj).hasclass('disabled_button')){ return false; } pp.options.page_no++; getpagelistdata(); } //跳转指定页码 pp.jumptopage = function(){ var no = $('#' + pp.options.button_container_id + ' .jump_page').val() - 1; if(no < 0 || no > (pp.options.all_page - 1)){ $('#' + pp.options.button_container_id + ' .pb_confirm').attr('href','javascript:void(0);'); alert('请输入1~' + pp.options.all_page + '之间的页数'); return false; } $('#' + pp.options.button_container_id + ' .pb_confirm').attr('href','#'); pp.options.page_no = no; getpagelistdata(); } //加载更多 pp.getmore = function(){ pp.options.page_no++; getpagelistdata(); } //初始化插件参数 pp.options = $.extend(pp.options,opts||{}); getpagelistdata(true,false); //生成接口参数 function getapidata(){ return { 'siteid':pp.options.site_id, 'channel_id':pp.options.channel_id, 'state':pp.options.state, 'p':pp.options.page_no, 'ps':pp.options.page_size, 'is_encrypt':0, 'only_client':pp.options.only_client, 'haschild':pp.options.haschild, 'skip_index':pp.options.skip_index } } /* * 调用分页数据接口 * firstflag:初次加载标志 * mmflag:跳转首页或尾页标志 */ function getpagelistdata(firstflag,mmflag){ $.ajax({ url: pp.options.server + pp.options.apiurl, data:pp.options.apifun(), type:"get", datatype: "json", success: function (data) { /* * data数据json * result:分页数据 * count:总条数 */ //总条数为undefined、不是数字或-1时,从接口中取值 if(pp.options.all_count =="undefined" || isnan(pp.options.all_count) || pp.options.all_count == -1){ pp.options.all_count = data.count - pp.options.skip_index; } if(pp.options.pager_mode == 0){//0-不需要页码按钮; setpagelistdata(data); }else if(pp.options.pager_mode == 1){//1-需要页码按钮,第2页才开始从接口获取数据; pp.options.all_page = math.ceil(pp.options.all_count/pp.options.page_size); setpagebutton(firstflag,mmflag); if(!firstflag){ setpagelistdata(data); } // pp.options.pager_mode = 0;//第一页是静态页面,不需要从接口获取数据,只加上按钮后,改掉标志位,第二页开始从接口获取数据 }else if(pp.options.pager_mode == 2){//2-需要页码按钮,第1页开始从接口获取数据 setpagelistdata(data); pp.options.all_page = math.ceil(pp.options.all_count/pp.options.page_size); setpagebutton(firstflag,mmflag); // pp.options.pager_mode = 0; }else if(pp.options.pager_mode == 3){//3-点击加载更多模式 pp.options.isclear = false; pp.options.all_page = math.ceil(pp.options.all_count/pp.options.page_size); setpagebutton(firstflag,mmflag); pp.options.pager_mode = 0; }else if(pp.options.pager_mode == 4){//4-点击加载更多模式,第1页从接口获取 pp.options.isclear = false; setpagelistdata(data); pp.options.all_page = math.ceil(pp.options.all_count/pp.options.page_size); setpagebutton(firstflag,mmflag); pp.options.pager_mode = 0; } }, error:function(){ } }); } /* * 插入分页数据 * data:分页数据 */ function setpagelistdata(data){ if(pp.options.isclear){ $('#'+pp.options.list_container_id).empty(); } $.each(data.result, function(i,documentcolumns) { var temp = $('#' + pp.options.template_container_id).html(); var reg = new regexp("#\/script","ig"); temp = temp.replace(reg, ' pp.options.page_no && (pp.options.page_no + 1) % 4 == 0)){ $('#' + pp.options.button_container_id).empty(); $('#' + pp.options.button_container_id).append("
");//按钮区域 $('#' + pp.options.button_container_id + ' .page_button_area').append(""+pp.options.pb_first_text+"");//首页页按钮 $('#' + pp.options.button_container_id + ' .page_button_area').append(""+pp.options.pb_pre_text+"");//上一页按钮 if(pp.options.all_page > 8){ if((pp.options.page_no + 1) >= 4){ var minpage = (pp.options.page_no - 4) > 0 ? (pp.options.page_no - 4) : 0; for(var i = minpage;i <= pp.options.page_no;i++){ $('#' + pp.options.button_container_id + ' .page_button_area').append(""+(i+1)+""); } var maxpage = pp.options.all_page > (pp.options.page_no + 5) ? (pp.options.page_no + 5) : pp.options.all_page; for(var i = pp.options.page_no + 1;i < maxpage;i++){ $('#' + pp.options.button_container_id + ' .page_button_area').append(""+(i+1)+""); } }else{ for(var i = pp.options.page_no;i < (pp.options.page_no + 8);i++){ $('#' + pp.options.button_container_id + ' .page_button_area').append(""+(i+1)+""); } } }else{ //总页码小于需要分段的数目,则加载全部页码按钮 for(var i = 0;i < pp.options.all_page;i++){ $('#' + pp.options.button_container_id + ' .page_button_area').append(""+(i+1)+""); } } $('#' + pp.options.button_container_id + ' .page_button_area').append(""+pp.options.pb_next_text+"");//下一页按钮 $('#' + pp.options.button_container_id + ' .page_button_area').append(""+pp.options.pb_last_text+"");//尾页按钮 $('#' + pp.options.button_container_id + ' .page_button_area').append(" "+pp.options.pb_confirm_text+""); $('#' + pp.options.button_container_id).append("
共"+pp.options.all_page+"页
");//信息区域 } }else{ $('#' + pp.options.button_container_id).append("
");//按钮区域 $('#' + pp.options.button_container_id + ' .more_page_button_area').append(""+pp.options.pb_more_text+"");//加载更多 } bindbuttonevent(); setpagebuttonattr(); } //绑定页码按钮的事件 //因为每次调用接口都会绑定事件,导致事件重复绑定了,所以每次绑定之前先解绑 function bindbuttonevent(){ //首页 $('#' + pp.options.button_container_id + ' .pb_first').unbind('click').bind('click',function(){ pp.gotopage(this,0); }); //上一页 $('#' + pp.options.button_container_id + ' .pb_pre').unbind('click').bind('click',function(){ pp.gotoprepage(this); }); //数字页码 $('#' + pp.options.button_container_id + ' .page_no_button').unbind('click').bind('click',function(){ var index = parseint($(this).text()) - 1; pp.gotopage(this,index); }); //下一页 $('#' + pp.options.button_container_id + ' .pb_next').unbind('click').bind('click',function(){ pp.gotonextpage(this); }); //尾页 $('#' + pp.options.button_container_id + ' .pb_last').unbind('click').bind('click',function(){ pp.gotopage(this,pp.options.all_page-1); }); //跳转 $('#' + pp.options.button_container_id + ' .pb_confirm').unbind('click').bind('click',function(){ pp.jumptopage(); }); //加载更多 $('#' + pp.options.button_container_id + ' .pb_more').unbind('click').bind('click',function(){ pp.getmore(); }); } //设置页码按钮属性 function setpagebuttonattr(){ $('#' + pp.options.button_container_id + ' .page_button_area a').removeclass('disabled_button');//移除所有不可点击class //第一页时,首页和上一页不可点击 if(pp.options.page_no == 0){ $('#' + pp.options.button_container_id + ' .pb_first').addclass('disabled_button'); $('#' + pp.options.button_container_id + ' .pb_pre').addclass('disabled_button'); } //最后一页时,尾页、下一页和加载更多按钮不可点击 if(pp.options.page_no == (pp.options.all_page - 1)){ $('#' + pp.options.button_container_id + ' .pb_next').addclass('disabled_button'); $('#' + pp.options.button_container_id + ' .pb_last').addclass('disabled_button'); //加载更多模式,更多按钮设置 $('#' + pp.options.button_container_id + ' .pb_more').addclass('disabled_button'); $('#' + pp.options.button_container_id + ' .pb_more').text(pp.options.pb_no_more_text); } $('#' + pp.options.button_container_id + ' .page_no_button').removeclass('current_page');//加上当前页class $('#' + pp.options.button_container_id + ' .pb_'+pp.options.page_no).addclass('current_page');//加上当前页class //给页码按钮加上href='#',仿页面跳转效果 $('#' + pp.options.button_container_id + ' .page_button_area a').attr('href','javascript:void(0);'); $('#' + pp.options.button_container_id + ' .page_button_area a').not('.disabled_button,.current_page,.pb_confirm,.pb_more').attr('href','#'); } return pp; }; window.ipager = ipager; })(window.jquery || $); /* ie下ajax跨域请求不执行,需要在head中加上meta,指定浏览器内核 */