首頁 > web前端 > js教程 > 快速解決jQuery與其他函式庫衝突的方法介紹_jquery

快速解決jQuery與其他函式庫衝突的方法介紹_jquery

WBOY
發布: 2016-05-16 17:05:57
原創
1004 人瀏覽過

通常,當在同一個頁面上使用jQuery和其他函式庫時,全域名稱$的定義是最大的爭論和衝突的焦點。眾所周知,jQuery使用$作為jQuery名稱的別名,並將其用於jQuery公開的每一個功能,但是其他庫,最著名的就是Prototype,也使用$名稱。

1. jQuery提供了$.noConflict()實用函數用來放棄對$標識符的佔用,以便其他庫使用它。

函數的語法如下:
$.noConflict(jqueryToo)

將識別碼$的控制權歸還給其他函式庫,允許在頁面上混合使用jQuery與其他函式庫。一旦執行了該函數,必須使用jQuery標識符而不是$標識符來呼叫jQuery的功能,

你也可以放棄jQuery識別碼(可選)

應該在包含了jQuery之後,但尚未包含衝突函式庫之前呼叫這個方法。


儘管使用的是jQuery標識符,但因為$是jQuery的別名,所以在應用$.noConflict()之後所有jQuery的功能依然可用。我們可以定義更短的,但沒有衝突的jQuery別名,例如

var  $j = jQuery ;

2. 另一個常見的習慣用法是創建一個作用域環境,在該環境中$標識符指向jQuery對象,在擴展jQuery的時候這是個常用技巧,特別是對於插件作者來說,他們不可能對於頁面開發者是否已經調用$.noConflict()作出任何假設,當然也不能自行調用此函數以免破壞頁面開發者的意願,

這個習慣用法如下:
(function($) { }) (jQuery);
(function($) { })

這部分聲明了一個函數並用圓括號括起來,由此生成一個表達式,這個表達式的結果是對一個匿名函數的引用,這個函數期望傳入單個參數並將其命名為$,在在函數主體中,可以透過$標識符來引用任何傳遞給這個函數的東西。因為參數宣告優先於全域作用域中任何類似的命名標識符,所以任何在函數外定義的$值在函數內都會被傳入的參數所取代。

(jQuery)

在匿名函數上執行函數調用,將jQuery物件作為參數傳遞


在函數外部不管$標識符是否已經在Prototype或其他函式庫中定義,在函數體內它總是指向jQuery物件。

當使用這個技巧時,外部宣告的$在函數體內是不可用的。

3. 第二種的用法的一個變體也經常用於聲明就緒處理函數,從而形成了第三種語法,
jQuery( function($){
})

當編寫可重複使用的元件並且這些元件可能會用於已經使用了$.noConflict()的頁面時,最好對$的定義採取這種預防措施。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板