摘要:就是內(nèi)部作為全局函數(shù)的插件添加到內(nèi)核上去的。選擇器插件擴(kuò)充自己喜歡的一些選擇器。在插件里的,經(jīng)過了一些封裝處理,就是表示對象。調(diào)用時(shí),字體大小會(huì)運(yùn)用插件里的默認(rèn)值
jQuery插件的分類
jQuery插件有很多,有UI類,表單驗(yàn)證,輸入類,特效類,Ajax類,滑動(dòng)類,導(dǎo)航類,工具類,動(dòng)畫類等等。
jQuery的插件主要分為三類:
1、封裝對象方法的插件:也就是基于某個(gè)DOM元素的jQuery對象,局部性 2、封裝全局函數(shù)的插件:將獨(dú)立的函數(shù)添加到j(luò)query的命名空間之下。jquery.trim()就是jquery內(nèi)部作為全局函數(shù)的插件添加到內(nèi)核上去的。 3、選擇器插件:擴(kuò)充自己喜歡的一些選擇器。類似于.toggle()插件的基本要點(diǎn)
1. 插件的文件名推薦為 jquery.[插件名].js,例如jquery.validate.js 2. 所有的對象方法都應(yīng)當(dāng)附加到j(luò)Query.fn對象上,而所有的全局函數(shù)都應(yīng)當(dāng)附加到j(luò)Query對象本身上 3. 在插件內(nèi)部,this指向的是當(dāng)前通過選擇器獲取的jQuery對象,而不像一般的方法那樣,例如click()方法,內(nèi)部的this指向的是DOM元素 4. 可以通過this.each來遍歷所有元素 5. 所有的方法或函數(shù)插件,都應(yīng)當(dāng)以分號(hào)結(jié)尾,否則壓縮時(shí)可能出問題,有的為了更加穩(wěn)妥些,在插件的開始處加上一個(gè)分號(hào) 6. 插件應(yīng)該返回一個(gè)jQuery對象,這樣可以保證插件的可鏈?zhǔn)讲僮鳌3遣寮枰祷氐氖且恍┬枰@取的量,例如字符串或者數(shù)組等 7. 盡量利用閉包技巧歷來避免變量名的沖突 8. 引入的自定義插件必須在jQuery庫后面插件開發(fā)方式
jQuery插件開發(fā)方式主要有三種:
通過$.extend()來擴(kuò)展jQuery 通過$.fn 向jQuery添加新的方法 通過$.widget()應(yīng)用jQuery UI的部件工廠方式創(chuàng)建
通常我們使用第二種方法來進(jìn)行簡單插件開發(fā),而第一種方法是在jQuery命名空間上添加了一個(gè)靜態(tài)方法,并不能讓我們選中DOM元素,然后再調(diào)用該方法。而第三種并不常用,也較為復(fù)雜
插件的結(jié)構(gòu)在開始編寫jQuery插件時(shí),我們有必要了解一下插件的基本結(jié)構(gòu),所有的jQuery插件都聲明為jQuery.fn對象的方法:
jQuery.fn.showPlugin = function () { //code here };
我們使用如下代碼使用插件:
$("#plugin").showPlugin();
這里,我并沒有使用$,這是為了避免命名沖突,如果要用 $ 的話,可以像下面這樣把插件代碼封裝在一個(gè)自執(zhí)行的匿名函數(shù)中,然后傳入?yún)?shù)jQuery
(function($){ jQuery.fn.showPlugin = function () { //code here }; })(jQUery);$.extend
.extend()允許你使用一個(gè)或多個(gè)對象擴(kuò)展基準(zhǔn)對象,擴(kuò)展的方式是依序?qū)⒂疫叺膶ο蠛喜⒌交鶞?zhǔn)對象(左邊第一個(gè)對象)。
;(function($){ $.extend({ "nav" : function () { } }) })(jQuery);
我們通過如下方法使用該全局方法:
$.nav();
前面(見:淺析jQuery整體框架與實(shí)現(xiàn)(上))我們說過,$.extend是全局性的,而$.fn.extend是局部性的,前面之所以要加分號(hào)是因?yàn)闉榱朔乐乖诖酥耙氲?b>js文件沒有加分號(hào)
$.fn.myPlugin = function() { //在這里面,this指的是用jQuery選中的元素 //example :$("a"),則this=$("a") this.css("color", "red"); }
this指代jQuery選擇器返回的集合。在插件里的this,經(jīng)過了一些封裝處理,this就是表示jQuery對象。而不需要再次使用$()進(jìn)行包裝了
鏈?zhǔn)秸{(diào)用要讓插件實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用只需要return該對象即可:
$.fn.myPlugin = function() { this.css("color", "red"); return this.each(function() { //對每個(gè)元素進(jìn)行操作 $(this).append(" " + $(this).attr("href")); })) }
使用return this.each(function () {} 這樣就實(shí)現(xiàn)了我們的鏈?zhǔn)讲僮鳌?/p> 接收多個(gè)參數(shù)
$.fn.myPlugin = function(options) { //經(jīng)常用options表示有多個(gè)參數(shù)。 var defaults = { "color": "red", "fontSize": "12px" }; var settings = $.extend(defaults, options); return this.css({ "color": settings.color, "fontSize": settings.fontSize }); }
調(diào)用時(shí),字體大小會(huì)運(yùn)用插件里的默認(rèn)值:
$("a").myPlugin({ "color": "#2C9929" });
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/85415.html
摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...
摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...
摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...
摘要:前端工程師學(xué)習(xí)資料,快速查找面試題,經(jīng)典技術(shù)文章的總結(jié),編程技巧,幫助學(xué)習(xí)者快速定位問題花點(diǎn)時(shí)間整理出一下前端工程師日常工作所需要的學(xué)習(xí)資料查找,幫助學(xué)習(xí)者快速掌握前端工程師開發(fā)的基本知識(shí)編程始于足下記住再牛逼的夢想也抵不住傻逼似的堅(jiān)持蝴蝶 前端工程師學(xué)習(xí)資料,快速查找面試題,經(jīng)典技術(shù)文章的總結(jié),編程技巧,幫助學(xué)習(xí)者快速定位問題花點(diǎn)時(shí)間整理出一下web前端工程師日常工作所需要的學(xué)習(xí)資料...
閱讀 2557·2021-11-22 15:35
閱讀 3830·2021-11-04 16:14
閱讀 2775·2021-10-20 13:47
閱讀 2587·2021-10-13 09:49
閱讀 2138·2019-08-30 14:09
閱讀 2500·2019-08-26 13:49
閱讀 949·2019-08-26 10:45
閱讀 2842·2019-08-23 17:54