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

2021-06-20 01:00:30 字數 1275 閱讀 5180

本篇文章主要是對快速解決jquery與其他庫衝突的方法進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助

通常,當在同乙個頁面上使用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物件作為引數傳遞

unity3d官網

在函式外部不管$識別符號是否已經在prototype或其他庫中定義,在函式體內它總是指向jquery物件。

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

3. 第二種的用法的乙個變體也經常用於宣告就緒處理函式,從而形成了第三種語法,

jquery( function($))

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

解決jquery與其他庫的衝突

1 jquery庫在其他庫之後引用,如下所示 在common.js中有對 重新定義,如下 function id 下面是在jquery中解決衝突的 有四種方式 方式1 jquery.noconflict 將 控制權移交出去,以前使用 的地方都改用jquery jquery document read...

jQuery與其他庫衝突的解決方法

在使用jquery開發的時候,可能還會使用到其他的js庫,比如prototype,但多庫共存時可能會發生衝突 若是發生衝突後,可以通過以下幾種方案進行解決 一 jquery庫在其他庫之前匯入,直接使用jquery callback 方法如 test prototype test jquery 二 j...

函式識別符號解決jQuery與其他庫衝突的方法

時間緊張,先記一筆,後續優化與完善。平日,當在同乙個頁面上應用jquery和其他庫時,全域性名稱 的定義是大最的爭辯和衝突的點焦。盡人皆知,jquery應用 作為jquery名稱的別名,並將其用於jquery開公的個一每功能,但是其他庫,最著名的就是prototype,也應用 名稱。1.jquery...