jquery插件開(kāi)發(fā)一般有兩種方法:
1?通過(guò)$.extend()來(lái)擴(kuò)展,寫(xiě)成jQuery.extend()也可以的
2?通過(guò)$.fn.extend()來(lái)進(jìn)行擴(kuò)展,也可以寫(xiě)成jQuery.fn.extend()
第一種方法,相當(dāng)于在$身上添加了一個(gè)全局函數(shù),如果和后臺(tái)java、c#類比的話,就是相當(dāng)于在
$或jQuey這個(gè)類上添加了一個(gè)靜態(tài)的方法(函數(shù))
那怎么寫(xiě)?
把通過(guò)第一種方法擴(kuò)展的插件寫(xiě)在這個(gè)common.js文件里,然后在index.html頁(yè)面去測(cè)試
代碼:
非常簡(jiǎn)單的一行代碼
然后看index.html頁(yè)面調(diào)用
然后看控制臺(tái)輸出:
一切都是妥妥的,沒(méi)毛病,而且其他頁(yè)面如果引用了,都能使用這個(gè)方法。
但是如果需要定義多個(gè)全局的函數(shù),通常我們用面向?qū)ο蟮乃枷雭?lái)編寫(xiě)。
例如:
將所有的成員都掛在一個(gè)對(duì)象上,或者說(shuō)是放在一個(gè)命令空間里。這樣做的好處就是,不用定義太多的外部變量,避免引起沖突。
調(diào)用:
調(diào)用的話就是: $.對(duì)象名.成員。
結(jié)果:
當(dāng)然我們也可以用jQuery提供給我們用于擴(kuò)展用的行數(shù)extend()
例如:
調(diào)用:
結(jié)果:
前面的這些都屬于第一種方法的范疇,本質(zhì)就是在$上添加全局函數(shù)就可以了。
再看第二種方式$.fn.extend(),這種方式相當(dāng)于給$的每一個(gè)實(shí)例對(duì)象添加方法(函數(shù))
首先我們要知道fn是個(gè)什么鬼,查看jQuery源代碼,會(huì)發(fā)現(xiàn)這樣的一行代碼:
說(shuō)明我們就是在原型上去做的擴(kuò)展。
例如:
注意:index是對(duì)應(yīng)的索引,ele對(duì)應(yīng)的是每一個(gè)dom元素對(duì)象
最后一樣的return是用于支持鏈?zhǔn)秸{(diào)用的。
調(diào)用:
最后的效果:
如果要擴(kuò)展多個(gè)方法,這個(gè)時(shí)候就需要這樣寫(xiě)了
顯然比較麻煩!
還是一樣可以使用jQuery提供給我們的方法(函數(shù))$.fn.extend()
如果要擴(kuò)展多個(gè)就可以這樣寫(xiě)了
調(diào)用:
能夠鏈?zhǔn)讲僮鳌?/p>
效果如圖所示:
總結(jié):
jQuey插件編寫(xiě)的兩種方式:
1 $.extend();???? // 在全局上添加函數(shù) 相當(dāng)于靜態(tài)方法(類比C#)
2 $.fn.extend();??? // 相當(dāng)于給jquey對(duì)象添加?? 相當(dāng)于實(shí)例方法(類比C#)
再補(bǔ)充一點(diǎn):
這個(gè)外面的this和里面的這個(gè)this不是同一個(gè)對(duì)象
查看其結(jié)果:
注意里面的每一個(gè)this對(duì)象都是dom對(duì)象
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。