<code>jquery.noconflict()</code>函數用于讓出jquery庫對變量$(和變量jquery)的控制權。
一般情況下,在jquery庫中,變量<code>$</code>是變量<code>jquery</code>的别名,它們之間是等價的,例如<code>jquery("p")</code>和<code>$("p")</code>是等價的。由于變量<code>$</code>隻有一個字元,并且特點鮮明,是以我們更加習慣使用<code>$</code>來操作jquery庫。
不過,其他js庫也可能使用變量<code>$</code>來進行操作,例如prototype庫。這個時候兩個庫可能會由于變量<code>$</code>的控制權問題而發生沖突。
此時,你可以使用該函數讓出jquery庫對變量<code>$</code>的控制權,将該變量交給上一個實作它的js庫,之後我們隻能使用變量<code>jquery</code>來操作jquery庫。
此外,使用該函數,還可以同時讓出變量<code>$</code>和變量<code>jquery</code>的控制權,進而實作多個不同版本的jquery庫共存(詳情見下面的示例說明)。
該函數屬于全局<code>jquery</code>對象。
參數
描述
removeall
可選/boolean類型是否徹底移交對變量jquery的控制權,預設為<code>false</code>。
如果省略了參數<code>removeall</code>或該參數不為<code>true</code>,則表示隻讓出對變量<code>$</code>的控制權;如果該參數為<code>true</code>,則表示同時讓出變量<code>$</code>和<code>jquery</code>的控制權。
以下是加載prototype和jquery庫的情況:
此外,我們還可以使用其他自定義的變量名來操作jquery:
即使是多個庫共存,我們也可以在<code>jquery.ready()</code>的回調函數或其他自定義函數中将局部變量<code>$</code>作為jquery的别名使用:
如果要實作兩個版本的jquery庫共存,我們可以編寫如下代碼:
三個版本的jquery庫共存,對應的jquery示例代碼如下:
注意:多個可能存在全局變量重名沖突的js庫,變量的實際控制權一般取決于js庫的加載順序。以上面三個版本的jquery庫的示例代碼為例,後加載的jquery庫的變量覆寫了之前版本的變量,是以每次讓出變量的控制權,控制權就會交給上一個js庫。