国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于jQuery封裝的分頁組件

2019-11-19 16:14:52
字體:
來源:轉載
供稿:網友

由于項目需要實現分頁效果,上jQuery插件庫找了下,但是木有找到自己想要的效果,于是自己封裝了個分頁組件。

思路:

主要是初始化時基于原型建立的分頁模板然后綁定動態事件并實現刷新DOM的分頁效果。

1.page.init.css

@charset "utf=8";*{ box-sizing: border-box; padding: 0; margin: 0;}.page{ font-size: 13px; text-align: right;}.page .page_to{ display: inline-block; max-width: 250px;}.page .page_to li{ display: inline-block; width: auto; height: auto; border: 1px solid #ddd; padding:5px 10px; border-left-width: 0; color: #323232; cursor: pointer;}.page .page_to li.page_hide{ display: none;}.page .page_to li:hover{ color: #32C2CD; background-color: #f4f4f4; border-color: #DDDDDD;}.page .page_to li:first-child{ border-left-width: 1px;}.page .page_jump{ display: inline-block; width: 180px;}.page .page_jump input.page_jump_input{ width: 52px; height: 28px; text-align: center; text-decoration: none; background-color: #fff; border: 1px solid #ddd; margin:0 4px;}.page .page_jump input.page_jump_btn{ display: inline-block; padding: 7px 20px; margin-left: 5px; font-size: 14px; font-weight: 400; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; border: 1px solid transparent; border-radius: 4px; background-color: #00BB9C; color: #FFFFFF; font-weight: bold;}

2.pageInit.js

/** * Created: 2017/6/20. * author: Aaron * address: http://www.cnblogs.com/aaron-pan/ */(function($,window,undefined){ var curPage='', //跳轉是否有值 jumpVal='', //從DOM中重新獲取數據總數/總頁數 lists='', totals='', //是否返回值 isTrue=false; var Page=function(opts){ this.settings= $.extend({},Page.defaults,opts); curPage=this.settings.initPage; totals=this.settings.totalPages; jumpVal=this.settings.inputVal; this.init(); }; //默認配置 Page.defaults={ container:'.page', setPos:'body', totalPages:null, totalLists:null, initPage:1, inputVal:1, callBack:null }; Page.prototype={ init:function(){  this.create(); }, create:function(){  var _template='<div class="page">'+  '<span class="page_details">'+  '共<span class="page_num">'+this.settings.totalLists+'</span>條記錄,'+  '第<span class="page_current">'+curPage+'</span>/'+  '<span class="page_size">'+this.settings.totalPages+'</span>頁'+  '</span>'+  '<div class="page_to">'+  '<ul class="flex_parent">'+  '<li class="page_first flex_child">首頁</li>'+  '<li class="page_pre page_hide flex_child">« 上一頁</li>'+  '<li class="page_next flex_child">下一頁 »</li>'+  '<li class="page_last flex_child">末頁</li>'+  '</ul>'+  '</div>'+  '<div class="page_jump">'+  '<span>第:<input type="number" class="page_jump_input" value="'+this.settings.inputVal+'">頁</span>'+  '<input type="button" class="page_jump_btn" value="Go">'+  '</div>'+  '</div>';  $(this.settings.setPos).append(_template);  this.refreshDom();  this.bindEvent(); }, bindEvent:function(){  var _this=this;  //跳轉首頁  $(this.settings.container).on("click",".page_first",function(){  lists=$(_this.settings.container).find(".page_num").text();  totals=$(_this.settings.container).find(".page_size").text();  if($.isFunction(_this.settings.callBack)){   curPage=1;   isTrue=_this.settings.callBack(1);   if(isTrue){   _this.refreshDom();   $(_this.settings.container).find(".page_current").text(1);   $(_this.settings.container).find(".page_jump_input").val(curPage);   }  }  });  //跳轉上一頁  $(this.settings.container).on("click",".page_pre",function(){  lists=$(_this.settings.container).find(".page_num").text();  totals=$(_this.settings.container).find(".page_size").text();  if($.isFunction(_this.settings.callBack)){   if(curPage>1){   curPage=curPage-1;   isTrue=_this.settings.callBack(curPage);   if(isTrue){    _this.refreshDom();    $(_this.settings.container).find(".page_current").text(curPage);    $(_this.settings.container).find(".page_jump_input").val(curPage);   }   }  }  });  //跳轉下一頁  $(this.settings.container).on("click",".page_next",function(){  lists=$(_this.settings.container).find(".page_num").text();  totals=$(_this.settings.container).find(".page_size").text();  if($.isFunction(_this.settings.callBack)){   if(curPage<totals){   curPage=curPage+1;   isTrue=_this.settings.callBack(curPage);   if(isTrue){    _this.refreshDom();    $(_this.settings.container).find(".page_current").text(curPage);    $(_this.settings.container).find(".page_jump_input").val(curPage);   }   }  }  });  //跳轉末頁  $(this.settings.container).on("click",".page_last",function(){  lists=$(_this.settings.container).find(".page_num").text();  totals=$(_this.settings.container).find(".page_size").text();  if($.isFunction(_this.settings.callBack)){   curPage=totals;   isTrue=_this.settings.callBack(curPage);   if(isTrue){   _this.refreshDom();   $(_this.settings.container).find(".page_current").text(totals);   $(_this.settings.container).find(".page_jump_input").val(curPage);   }  }  });  //Go跳轉  $(this.settings.container).on("click",".page_jump_btn",function(){  lists=$(_this.settings.container).find(".page_num").text();  totals=$(_this.settings.container).find(".page_size").text();  if($.isFunction(_this.settings.callBack)){   jumpVal=Number($(_this.settings.container).find("input.page_jump_input").val());   console.log('跳轉的頁數:'+jumpVal+';跳轉之前的頁數:'+curPage);   if(jumpVal>=1 && jumpVal <=totals){   curPage=jumpVal;   isTrue=_this.settings.callBack(curPage);   if(isTrue){    _this.refreshDom();    $(_this.settings.container).find(".page_current").text(curPage);   }   }else{   jumpVal=curPage;   }  }  }); }, refreshDom:function(){  $(this.settings.container).find("li.flex_child").removeClass("page_hide");  if(Number(totals)==1){  $(this.settings.container).find(".page_pre").addClass("page_hide");  $(this.settings.container).find(".page_next").addClass("page_hide");  }  else if(Number(totals)==2){  if(Number(curPage)==1){   $(this.settings.container).find(".page_pre").addClass("page_hide");  }else{   $(this.settings.container).find(".page_next").addClass("page_hide");  }  }  else if(Number(curPage)==1 && Number(totals)>2){  $(this.settings.container).find(".page_pre").addClass("page_hide");  }  else if(Number(curPage)==Number(totals) && Number(totals)>2){  $(this.settings.container).find(".page_next").addClass("page_hide");  } } }; var pageInit=function(opts){ return new Page(opts); }; window.pageInit= $.pageInit=pageInit;})(jQuery,window,undefined);

3.組件調用

通過 window.pageInit= $.pageInit=pageInit 可完成分頁組件初始化。

暴露出來的接口分別為:

1.container:DOM的容器,默認.page

2.setPos:DOM放置的HTML位置,默認body

3.totalPages:默認的頁數,必填,默認null

4.totalLists:默認的數據總數,必填,默認null

5.initPage:當前頁,默認第一頁

6.inputVal:跳轉頁,默認第一頁

7.callBack:執行的回調函數,必填,默認null

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>基于jQuery封裝的分頁組件</title> <link rel="stylesheet" href="css/page.init.css"></head><body><script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.js"></script><script src="js/pageInit.js"></script><script> $.pageInit(  {  container:'.page',//容器:默認page  //setPos:'body',//放置位置:默認body  totalPages:10,//總頁數:必填  totalLists:100,//數據總數:必填  initPage:1,//初始頁碼:默認1  inputVal:1,//設置跳轉的input值:默認1  //要執行的函數:默認null,必須為fn且返回true則可執行分頁,false則不執行  callBack:function(n){   var flag=true;   console.log(n);   return flag;  }  } );</script></body></html>

效果:

通過callBack接口,添加自己所需要執行的function函數,并且需要return true時才回執行動態的DOM渲染。

更多精彩內容請點擊:jquery分頁功能匯總進行學習。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 皮山县| 都安| 昌图县| 枣强县| 盐边县| 横峰县| 中牟县| 迭部县| 岢岚县| 临海市| 平乡县| 常熟市| 文登市| 舞阳县| 保山市| 苍梧县| 莒南县| 陵水| 绥阳县| 修武县| 新沂市| 青海省| 邢台市| 通许县| 西平县| 荣昌县| 广汉市| 株洲县| 错那县| 图木舒克市| 吉林省| 广河县| 罗城| 固始县| 休宁县| 察雅县| 陵水| 青龙| 石泉县| 阿尔山市| 潍坊市|