快速解決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.get提交頁(yè)面不跳轉(zhuǎn)的解決方法
這篇文章主要介紹了JQuery.get提交頁(yè)面不跳轉(zhuǎn)的解決方法,本文分析了不跳轉(zhuǎn)的原因同時(shí)給出了跳轉(zhuǎn)的方法,需要的朋友可以參考下2015-01-01淺談jQuery中 wrap() wrapAll() 與 wrapInner()的差異
本文結(jié)合W3School的文檔,分析了jQuery中 wrap() wrapAll() 與 wrapInner()的差異,并給出了圖文對(duì)比教程,非常的簡(jiǎn)單實(shí)用,有需要的朋友可以參考下2014-11-11JQuery中判斷一個(gè)元素下面是否有內(nèi)容或者有某個(gè)標(biāo)簽的判斷代碼
網(wǎng)站開(kāi)發(fā)時(shí),我們時(shí)常需要把沒(méi)有內(nèi)容的標(biāo)簽隱藏或者去掉。在用JQ有兩種好的解決辦法2012-02-02jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫(xiě)在控件中的具體實(shí)例
本篇文章主要是對(duì)jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫(xiě)在控件中的具體實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02jQuery刪除當(dāng)前節(jié)點(diǎn)元素
本文給大家分享一段代碼給大家介紹jquery刪除當(dāng)前節(jié)點(diǎn)元素的方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友參考下吧2016-12-12jQuery實(shí)現(xiàn)漂亮實(shí)用的商品圖片tips提示框效果(無(wú)圖片箭頭+陰影)
這篇文章主要介紹了jQuery實(shí)現(xiàn)漂亮實(shí)用的商品圖片tips提示框效果,具有鼠標(biāo)滑過(guò)顯示動(dòng)態(tài)提示框的效果,涉及針對(duì)鼠標(biāo)事件的響應(yīng)及頁(yè)面元素動(dòng)態(tài)操作技巧,需要的朋友可以參考下2016-04-04jQuery UI Autocomplete 1.8.16 中文輸入修正代碼
jQuery UI Autocomplete 1.8.16 中文輸入修正代碼,使用jQuery UI Autocomplete的朋友可以參考下2012-04-04