成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript簡(jiǎn)單分頁(yè),兼容IE6,~3KB

Salamander / 1442人閱讀

簡(jiǎn)介

兼容IE6+及現(xiàn)代瀏覽器的簡(jiǎn)單分頁(yè),支持同一頁(yè)面多個(gè)分頁(yè)。

使用 Browser


普通分頁(yè) HTML
JS
gbPaging({
    total: 101,
    paramName: "p",
    curPage: getPage("p", "#"),
    size: 5,
    prevText: "<",
    nextText: ">",
    pageInfo: "{{currentPage}}/{{totalPages}}",
    eventType: "click"
});
同頁(yè)面另一個(gè)分頁(yè) HTML
JS
gbPaging({
    eleId: "paging1",
    total: 54,
    size: 10,
    prevText: false,
    nextText: false,
    paramName: "p1",
    curPage: getPage("p1", "#"),
    pageInfo: false,
    eventType: "click"
});
刷新帶參數(shù) HTML
JS
gbPaging({
    eleId: "paging2",
    total: 2500,
    paramName: "page",
    curPage: getPage("page", "?type=1&name=2&"),
    goUrl: "?type=1&name=2&{{n}}"
});
輔助函數(shù)
function getPage(pname, other){
    var page = window.location.search.replace( other + pname + "=", "") || 1;
    return parseInt(page);
}
選項(xiàng)

eleId 分頁(yè)容器,僅支持ID,默認(rèn)為: "gbpaging"

total: 總記錄數(shù)

paramName: 分頁(yè)參數(shù)名 || "p"

curPage: 當(dāng)前頁(yè)碼

size: 每頁(yè)記錄數(shù) || 10

prevText: 上一頁(yè)文案 || "上一頁(yè)",值為 false 不顯示

nextText: "下一頁(yè)文案 || "下一頁(yè)" 值為 false 不顯示

pageInfo: 分頁(yè)信息,{{currentPage}}當(dāng)前頁(yè)碼,{{totalPages}}總頁(yè)數(shù) || 當(dāng)前第{{currentPage}}頁(yè)/共{{totalPages}}頁(yè),值為 false 不顯示

eventType: 事件方式,"click" || "link"

goUrl: 鏈接URL,"?type=1&name=2&{{n}}" || "",{{n}}為分頁(yè)參數(shù)名+值,如:"p=1"

DEMO

http://blog.givebest.cn/GB-paging.html

Github

https://github.com/givebest/GB-paging

完整代碼
/**
    * GB-paging.js
    * @class gbPaging
    * @see https://github.com/givebest/GB-paging
    * @author [email protected]
    * @(c) 2016
    **/

    (function() {

        var $,
        defaultConfig,
        paging = null,
        args;

        /**
       * [defaultConfig 默認(rèn)配置]
       * @type {Object}
       */
      defaultConfig = {
        eventType: "link",
        curPage: 1,             //當(dāng)前頁(yè)           
        size: 10,                        //每頁(yè)n條
        paramName: "p",                  //頁(yè)碼參數(shù)
        prevText: "上一頁(yè)",
        nextText: "下一頁(yè)",
        pageInfo: "當(dāng)前第{{currentPage}}頁(yè)/共{{totalPages}}頁(yè)"
      }

        /**
         * [$ description]
         * @param  {String} id 
         * @return {Object} HTML   [HTML element]
         */
        $ = function(id) {
            return document.getElementById(id);
        }

        function GbPaging() {    
            if (!(this instanceof GbPaging)) return new GbPaging();
        }

        GbPaging.prototype.init = function(opts) {
            this.getParams(opts);
            this.build();
            this.events();
        }

        GbPaging.prototype.getParams = function(opts) {
            args = this.opts = opts || {};
            // _this = this;

        if ($(args.eleId)) {
          args.container = $(args.eleId);
        } else if ($("gbpaging")) {
          args.container = $("gbpaging");
        } else {
          return;
        }

        args.eventType = args.eventType || defaultConfig.eventType;
        args.total = args.total || 0;
        args.curPage = args.curPage || defaultConfig.curPage;
        args.size = args.size || defaultConfig.size;
        args.paramName = args.paramName || defaultConfig.paramName;
        args.goUrl = args.goUrl || "";
        args.pages = Math.ceil(args.total / args.size || 0);
        args.isPrev = (args.prevText !== false) ? true : false;
        args.prevText = args.prevText || defaultConfig.prevText;
        args.isNext = (args.nextText !== false) ? true : false;
        args.nextText = args.nextText || defaultConfig.nextText;
        args.isPageInfo = (args.pageInfo !== false) ? true : false;
        args.pageInfo = args.pageInfo || defaultConfig.pageInfo;
        }

        /**
         * [分頁(yè)html]
         * @return {[type]} [description]
         */
        GbPaging.prototype.build = function() {
            var html = [];
            // console.log("build", args)

            // 沒(méi)有數(shù)據(jù)
        if (args.pages <= 1) {
          addClass(args.container, "gb-hide");
          return;
        }

        if (args.curPage >>> 0 <= 0) return;

        var ii = (args.curPage == 1 || args.curPage == args.pages) ? 3 : 2;
        var urlParam = parseUrl(args.goUrl, args.paramName);

        html.push("" + args.curPage + "");

        for (var i = 1; i < ii; i++) {
          if (args.curPage - i > 1) {
            html.unshift("" + (args.curPage - i) + "");
          }

          if (args.curPage + i < args.pages) {
            html.push("" + (args.curPage + i) + "");
          }
        }

        if (args.curPage - 2 > 1) {
          html.unshift("...");
        }

        if (args.curPage > 1) {
          html.unshift("1");
          args.isPrev && html.unshift("" + args.prevText + "");
        } else {
          args.isPrev && html.unshift("" + args.prevText + "");
        }

        if (args.curPage + 2 < args.pages) {
          html.push("...");
        }

        if (args.curPage < args.pages) {
          html.push("" + args.pages + "");
          args.isNext && html.push("" + args.nextText + "");
        } else {
          args.isNext && html.push("" + args.nextText + "");
        }

        // 是否顯示右側(cè)分頁(yè)信息
        if (args.isPageInfo) html.push("
" + args.pageInfo.replace("{{currentPage}}", args.curPage).replace("{{totalPages}}", args.pages) + "
"); args.container.innerHTML = html.join(""); } /** * [綁定事件] * @return {[type]} [description] */ GbPaging.prototype.events = function() { var _this = this; if (args.eventType !== "click") return; bind(args.container, "click", function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false; args = _this.opts; // console.log("events", _this.opts); var target = e.target || e.srcElement; if (target.tagName.toLowerCase() === "a" && !hasClass(target, "disabled")) { args.curPage = target.getAttribute("href").replace(parseUrl(args.goUrl, args.paramName), ""); if (args.curPage >>> 0 === 0) args.curPage = args.curPage.replace(window.location.href, ""); args.curPage = parseInt(args.curPage); _this.build(); } }); } /** * [解釋URL] * @param {[String]} url [description] * @param {[String]} param [description] * @return {[String]} [description] */ function parseUrl(url, param) { if (url) { return url.replace("{{n}}", param + "="); } else { return "#" + param + "="; } } /** * Bind events to elements * @param {Object} ele HTML Object * @param {Event} event Event to detach * @param {Function} fn Callback function */ function bind(ele, event, fn) { if (typeof addEventListener === "function") { ele.addEventListener(event, fn, false); } else if (ele.attachEvent) { ele.attachEvent("on" + event, fn); } } /** * Unbind events to elements * @param {Object} ele HTML Object * @param {Event} event Event to detach * @param {Function} fn Callback function */ /* function unbind(ele, event, fn) { if (typeof removeEventListener === "function") { ele.removeEventListener(event, fn, false); } else if (ele.detachEvent) { ele.detach("on" + event, fn); } }*/ /** * hasClass * @param {Object} ele HTML Object * @param {String} cls className * @return {Boolean} */ function hasClass(ele, cls) { if (!ele || !cls) return false; if (ele.classList) { return ele.classList.contains(cls); } else { return ele.className.match(new RegExp("(s|^)" + cls + "(s|$)")); } } /** * [addClass description] * @param {Object} ele [HTML Object] * @param {String} cls [className] */ function addClass(ele, cls) { if (ele.classList) { ele.classList.add(cls); } else { if (!hasClass(ele, cls)) ele.className += "" + cls; } } /** * [removeClass description] * @param {Object} ele [HTML Object] * @param {String} cls [className] */ /* function removeClass(ele, cls) { if (ele.classList) { ele.classList.remove(cls); } else { ele.className = ele.className.replace(new RegExp("(^|)" + className.split(" ").join("|") + "(|$)", "gi"), " "); } }*/ if (window.gbPaging === undefined) { window.gbPaging = function (opts) { paging = GbPaging(); return paging.init(opts); } } // AMD (@see https://github.com/jashkenas/underscore/blob/master/underscore.js) if (typeof define == "function" && define.amd) { define("GB-paging", [], function() { return gbPaging; }); } }());

轉(zhuǎn)載請(qǐng)注明:https://segmentfault.com/a/1190000006878074

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90972.html

相關(guān)文章

  • 前端技術(shù) 博客文章、書(shū)籍 積累

    摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫(xiě)代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書(shū)籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專(zhuān)家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...

    LiangJ 評(píng)論0 收藏0
  • 前端技術(shù) 博客文章、書(shū)籍 積累

    摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫(xiě)代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書(shū)籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專(zhuān)家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...

    codercao 評(píng)論0 收藏0
  • 前端技術(shù) 博客文章、書(shū)籍 積累

    摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫(xiě)代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書(shū)籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專(zhuān)家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...

    huayeluoliuhen 評(píng)論0 收藏0
  • 推薦輕量高效無(wú)依賴(lài)的開(kāi)源JS插件和庫(kù)

    摘要:彈出層是一個(gè)輕量級(jí)的庫(kù)用于管理工具提示和彈窗效果。一個(gè)帶有的跨瀏覽器富文本編輯器。由制作,適用于每天寫(xiě)作的富文本編輯器。輕量的操作庫(kù)。是一個(gè)快速簡(jiǎn)單輕量級(jí)的瀏覽器功能檢測(cè)庫(kù)。它沒(méi)有任何的依賴(lài),并且壓縮后僅有。極小跨平臺(tái)的全屏插件。 在這里維持一個(gè)持續(xù)更新的地方 圖片 baguetteBox.js - 是一個(gè)簡(jiǎn)單易用的響應(yīng)式圖像燈箱效果腳本。demo Lightgallery.js -...

    AlphaWallet 評(píng)論0 收藏0
  • 推薦輕量高效無(wú)依賴(lài)的開(kāi)源JS插件和庫(kù)

    摘要:彈出層是一個(gè)輕量級(jí)的庫(kù)用于管理工具提示和彈窗效果。一個(gè)帶有的跨瀏覽器富文本編輯器。由制作,適用于每天寫(xiě)作的富文本編輯器。輕量的操作庫(kù)。是一個(gè)快速簡(jiǎn)單輕量級(jí)的瀏覽器功能檢測(cè)庫(kù)。它沒(méi)有任何的依賴(lài),并且壓縮后僅有。極小跨平臺(tái)的全屏插件。 在這里維持一個(gè)持續(xù)更新的地方 圖片 baguetteBox.js - 是一個(gè)簡(jiǎn)單易用的響應(yīng)式圖像燈箱效果腳本。demo Lightgallery.js -...

    lushan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<