摘要:避免函數(shù)體內(nèi)和外部的變量沖突。實(shí)參分別接受對象,對象都是全局環(huán)境下的,而在函數(shù)體內(nèi)的其實(shí)是局部變量,不是全局的對象。
查看效果
HTMLJS
;(function ($, window, document, undefined) { "use strict"; function Paging(element, options) { this.element = element; this.options = { pageNum: options.pageNum || 1, // 當(dāng)前頁碼 totalNum: options.totalNum, // 總頁碼 totalList: options.totalList, // 數(shù)據(jù)總記錄 callback: options.callback // 回調(diào)函數(shù) }; this.init(); } Paging.prototype = { constructor: Paging, init: function () { this.createHtml(); this.bindEvent(); }, createHtml: function () { var me = this; var content = []; var pageNum = me.options.pageNum; var totalNum = me.options.totalNum; var totalList = me.options.totalList; content.push(""); // 總頁數(shù)大于6必顯示省略號 if (totalNum > 6) { // 1、當(dāng)前頁碼小于5且總頁碼大于6 省略號顯示后面+總頁碼 if (pageNum < 5) { // 1與6主要看要顯示多少個按鈕 目前都顯示5個 for (var i = 1; i < 6; i++) { if (pageNum !== i) { content.push(""); } else { content.push(""); } } content.push(". . ."); content.push(""); } else { // 2、當(dāng)前頁碼接近后面 中間隔3個 省略號顯示后面+總頁面 if (pageNum < totalNum - 3) { for (var i = pageNum - 2; i < pageNum + 3; i++) { if (pageNum !== i) { content.push(""); } else { content.push(""); } } content.push(". . ."); content.push(""); } else { // 3、頁碼至少在5,最多在【totalNum - 3】的中間位置 第一頁+省略號顯示前面 content.push(""); content.push(". . ."); for (var i = totalNum - 4; i < totalNum + 1; i++) { if (pageNum !== i) { content.push(""); } else { content.push(""); } } } } } else { // 總頁數(shù)小于6 for (var i = 1; i < totalNum + 1; i++) { if (pageNum !== i) { content.push(""); } else { content.push(""); } } } content.push(""); content.push(" 共 " + totalNum + " 頁 "); content.push(" 共 " + totalList + " 條記錄 "); me.element.html(content.join("")); // DOM重新生成后每次調(diào)用是否禁用button setTimeout(function () { me.dis(); }, 20); }, bindEvent: function () { var me = this; me.element.off("click", "button"); // 委托新生成的dom監(jiān)聽事件 me.element.on("click", "button", function () { var id = $(this).attr("id"); var num = parseInt($(this).html()); var pageNum = me.options.pageNum; if (id === "prePage") { if (pageNum !== 1) { me.options.pageNum -= 1; } } else if (id === "nextPage") { if (pageNum !== me.options.totalNum) { me.options.pageNum += 1; } } else if (id === "firstPage") { if (pageNum !== 1) { me.options.pageNum = 1; } } else if (id === "lastPage") { if (pageNum !== me.options.totalNum) { me.options.pageNum = me.options.totalNum; } } else { me.options.pageNum = num; } me.createHtml(); if (me.options.callback) { me.options.callback(me.options.pageNum); } }); }, dis: function () { var me = this; var pageNum = me.options.pageNum; var totalNum = me.options.totalNum; if (pageNum === 1) { me.element.children("#firstPage, #prePage").prop("disabled", true); } else if (pageNum === totalNum) { me.element.children("#lastPage, #nextPage").prop("disabled", true); } } }; $.fn.paging = function (options) { return new Paging($(this), options); } })(jQuery, window, document);
jQuery插件友情鏈接
// 1、代碼最前面的分號,可以防止多個文件壓縮合并以為其他文件最后一行語句沒加分號,而引起合并后的語法錯誤。
// 2、匿名函數(shù)(function(){})();:由于Javascript執(zhí)行表達(dá)式是從圓括號里面到外面,所以可以用圓括號強(qiáng)制執(zhí)行聲明的函數(shù)。避免函數(shù)體內(nèi)和外部的變量沖突。
// 3、$實(shí)參:$是jquery的簡寫,很多方法和類庫也使用$,這里$接受jQuery對象,也是為了避免$變量沖突,保證插件可以正常運(yùn)行。
// 4、window, document實(shí)參分別接受window, document對象,window, document對象都是全局環(huán)境下的,而在函數(shù)體內(nèi)的window, document其實(shí)是局部變量,不是全局的window, document對象。這樣做有個好處就是可以提高性能,減少作用域鏈的查詢時間,如果你在函數(shù)體內(nèi)需要多次調(diào)用window 或 document對象,這樣把window 或 document對象當(dāng)作參數(shù)傳進(jìn)去,這樣做是非常有必要的。當(dāng)然如果你的插件用不到這兩個對象,那么就不用傳遞這兩個參數(shù)了。
// 5、undefined形參了,看起來是有點(diǎn)多余。undefined在老一輩的瀏覽器是不被支持的,直接使用會報錯,js框架要考慮到兼容性,因此增加一個形參undefined
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103170.html
摘要:用分布函數(shù)來制作分頁鏈接,可以省下很多代碼流量呢看看跳轉(zhuǎn)到頁之后只要這么引用它就好了 用JavaScript分布函數(shù)來制作分頁鏈接,可以省下很多html代碼流量呢!看看 (function($){ $.fn.pagination=function(pagecount,page,surl){ var $box=$(this).empty();var shtml= if(pagecoun...
摘要:插件的使用正在熟悉項(xiàng)目上的代碼,新添加了一個需要,需要對表單進(jìn)行分頁,之前的代碼中是有分頁的代碼的,看了老半天,也沒看太明白。 jQuery插件simplePagination的使用 正在熟悉項(xiàng)目上的代碼,新添加了一個需要,需要對表單進(jìn)行分頁,之前的代碼中是有分頁的代碼的,看了老半天,也沒看太明白。之前的項(xiàng)目比較久遠(yuǎn),繼續(xù)熟悉代碼。 simplePagination的使用 HTML頁面...
摘要:插件的使用正在熟悉項(xiàng)目上的代碼,新添加了一個需要,需要對表單進(jìn)行分頁,之前的代碼中是有分頁的代碼的,看了老半天,也沒看太明白。 jQuery插件simplePagination的使用 正在熟悉項(xiàng)目上的代碼,新添加了一個需要,需要對表單進(jìn)行分頁,之前的代碼中是有分頁的代碼的,看了老半天,也沒看太明白。之前的項(xiàng)目比較久遠(yuǎn),繼續(xù)熟悉代碼。 simplePagination的使用 HTML頁面...
摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級程序設(shè)計》《JavaScript框架設(shè)計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計模式》《J...
閱讀 978·2021-11-24 09:39
閱讀 2735·2021-09-26 09:55
閱讀 14444·2021-08-23 09:47
閱讀 3591·2019-08-30 15:52
閱讀 862·2019-08-29 13:49
閱讀 1014·2019-08-23 18:00
閱讀 859·2019-08-23 16:42
閱讀 1654·2019-08-23 14:28