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