快速解決jQuery與其他庫(kù)沖突的方法介紹
通常,當(dāng)在同一個(gè)頁(yè)面上使用jQuery和其他庫(kù)時(shí),全局名稱(chēng)$的定義是最大的爭(zhēng)論和沖突的焦點(diǎn)。眾所周知,jQuery使用$作為jQuery名稱(chēng)的別名,并將其用于jQuery公開(kāi)的每一個(gè)功能,但是其他庫(kù),最著名的就是Prototype,也使用$名稱(chēng)。
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è)面開(kāi)發(fā)者是否已經(jīng)調(diào)用$.noConflict()作出任何假設(shè),當(dāng)然也不能自行調(diào)用此函數(shù)以免破壞頁(yè)面開(kāi)發(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)先于全局作用域中任何類(lèi)似的命名標(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)編寫(xiě)可重用的組件并且這些組件可能會(huì)用于已經(jīng)使用了$.noConflict()的頁(yè)面時(shí),最好對(duì)$的定義采取這種預(yù)防措施。
相關(guān)文章
基于jQuery實(shí)現(xiàn)淡入淡出效果輪播圖
這篇文章主要為大家詳細(xì)介紹了基于jQuery淡入淡出效果輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
jQuery 重復(fù)加載錯(cuò)誤以及修復(fù)方法
本文主要記錄了在項(xiàng)目中遇到j(luò)Query重復(fù)加載導(dǎo)致依賴(lài)jQuery的js全部失效然后一步步分析,得出最終解決方案的全部過(guò)程,主要是記錄下來(lái),提醒自己以后不要再犯相同錯(cuò)誤。2014-12-12
web的各種前端打印方法之jquery打印插件PrintArea實(shí)現(xiàn)網(wǎng)頁(yè)打印
jquery打印插件PrintArea實(shí)現(xiàn)網(wǎng)頁(yè)打印,不可思議吧,接下來(lái)為您介紹它的使用方法及操作步驟,感興趣的朋友可以了解下2013-01-01
jQuery 1.9使用$.support替代$.browser的使用方法
jQuery 從 1.9 版開(kāi)始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support,下面我們來(lái)看下具體的使用方法2014-05-05
jQuery實(shí)現(xiàn)帶動(dòng)畫(huà)效果的多級(jí)下拉菜單代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)帶動(dòng)畫(huà)效果的多級(jí)下拉菜單代碼,可實(shí)現(xiàn)點(diǎn)擊漸隱漸顯效果,涉及jQuery頁(yè)面元素的遍歷及鏈?zhǔn)讲僮飨嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
適用于手機(jī)端的jQuery圖片滑塊動(dòng)畫(huà)
這篇文章主要為大家分享了適應(yīng)手機(jī)端的jQuery圖片滑塊動(dòng)畫(huà),不僅在PC瀏覽器上可以使用,而且更適合在手機(jī)端的網(wǎng)頁(yè)中使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
jQuery實(shí)現(xiàn)小球點(diǎn)擊發(fā)射動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)小球點(diǎn)擊發(fā)射動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Jquery倒數(shù)計(jì)時(shí)按鈕setTimeout的實(shí)例代碼
這篇文章介紹了Jquery倒數(shù)計(jì)時(shí)按鈕setTimeout的實(shí)例,有需要的朋友可以參考一下2013-07-07

