1. jQuery提供了$.noConflict()實(shí)用函數(shù)用來(lái)放棄對(duì)$標(biāo)識(shí)符的占用,以便其他庫(kù)使用它。
該函數(shù)的語(yǔ)法如下:
$.noConflict(jqueryToo)
將標(biāo)識(shí)符$的控制權(quán)歸還給其他庫(kù),允許在頁(yè)面上混合使用jQuery與其他庫(kù)。一旦執(zhí)行了該函數(shù),必須使用jQuery標(biāo)識(shí)符而不是$標(biāo)識(shí)符來(lái)調(diào)用jQuery的功能,
你也可以放棄jQuery標(biāo)識(shí)符(可選)
應(yīng)該在包含了jQuery之后,但尚未包含沖突庫(kù)之前調(diào)用這個(gè)方法。
盡管使用的是jQuery標(biāo)識(shí)符,但因?yàn)?是jQuery的別名,所以在應(yīng)用$.noConflict()之后所有jQuery的功能依然可用。我們可以定義更短的,但沒(méi)有沖突的jQuery別名,例如
var $j = jQuery ;
2. 另一個(gè)常見(jiàn)的習(xí)慣用法是創(chuàng)建一個(gè)作用域環(huán)境,在該環(huán)境中$標(biāo)識(shí)符指向jQuery對(duì)象,在擴(kuò)展jQuery的時(shí)候這是個(gè)常用技巧,特別是對(duì)于插件作者來(lái)說(shuō),他們不可能對(duì)于頁(yè)面開發(fā)者是否已經(jīng)調(diào)用$.noConflict()作出任何假設(shè),當(dāng)然也不能自行調(diào)用此函數(shù)以免破壞頁(yè)面開發(fā)者的意愿,
這個(gè)習(xí)慣用法如下:
(function($) { }) (jQuery);
(function($) { })
這部分聲明了一個(gè)函數(shù)并用圓括號(hào)括起來(lái),由此生成一個(gè)表達(dá)式,這個(gè)表達(dá)式的結(jié)果是對(duì)一個(gè)匿名函數(shù)的引用,這個(gè)函數(shù)期望傳入單個(gè)參數(shù)并將其命名為$,在函數(shù)主體中,可以通過(guò)$標(biāo)識(shí)符來(lái)引用任何傳遞給這個(gè)函數(shù)的東西。因?yàn)閰?shù)聲明優(yōu)先于全局作用域中任何類似的命名標(biāo)識(shí)符,所以任何在函數(shù)外定義的$值在函數(shù)內(nèi)都會(huì)被傳入的參數(shù)所代替。
(jQuery)
在匿名函數(shù)上執(zhí)行函數(shù)調(diào)用,將jQuery對(duì)象作為參數(shù)傳遞
在函數(shù)外部不管$標(biāo)識(shí)符是否已經(jīng)在Prototype或其他庫(kù)中定義,在函數(shù)體內(nèi)它總是指向jQuery對(duì)象。
當(dāng)使用這個(gè)技巧時(shí),外部聲明的$在函數(shù)體內(nèi)是不可用的。
3. 第二種的用法的一個(gè)變體也經(jīng)常用于聲明就緒處理函數(shù),從而形成了第三種語(yǔ)法,
jQuery( function($){
})
當(dāng)編寫可重用的組件并且這些組件可能會(huì)用于已經(jīng)使用了$.noConflict()的頁(yè)面時(shí),最好對(duì)$的定義采取這種預(yù)防措施。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com