jQuery解決$符號(hào)命名沖突
前些天朋友讓我?guī)退鉀Q一個(gè)頁面中jquery特效的兼容性問題,覺得這是一個(gè)很容易忽略也很重要的一點(diǎn),特在此記錄一下。
朋友給的頁面中用到了三個(gè)特效,其中兩個(gè)特效可以顯示,第三個(gè)沒有效果。通過查看引用的js文件,我發(fā)現(xiàn)頁面中不光引入了jquery.js,還引入了一個(gè)名為prototype.js的文件。 這個(gè)prototype.js之前未曾聽說過,特意在百度上搜了一下,原來它也是一個(gè)js類庫,功能和jquery差不多,而且很強(qiáng)大。
通過一點(diǎn)點(diǎn)的排查,我發(fā)現(xiàn)那兩個(gè)可以顯示的特效引用的是jquery,而不顯示的那個(gè)特效引用的是這個(gè)prototype.js。 稍一分析,終于找到了出錯(cuò)的關(guān)鍵:jquery中的$和prototype.js中的$沖突了,兩個(gè)類庫中都是通過$符號(hào)來調(diào)用,然而如果直接這樣寫的話就會(huì)不知道這個(gè)$是屬于誰的,該調(diào)用哪個(gè)類庫中的方法來實(shí)現(xiàn)特效的顯示。
既然找到了問題的根結(jié)所在,那這個(gè)問題也就好解決了。
方法一:在jquery中,有這樣一段代碼:
// Expose jQuery to the global object window.jQuery = window.$ = jQuery;
也就是說,我們可以通過jQuery來代替jquery.js中的$符號(hào)進(jìn)行調(diào)用,前提必須聲明一下:
jQuery = $;
那,新的問題又出現(xiàn)了。頁面中有那么多地方用到了$,我不僅要區(qū)分到底哪些$是屬于jquery的,還要將這些$替換成jQuery這個(gè)單詞,更嚴(yán)重的是,如果該頁面中要增加新的jquery特效,我還要時(shí)刻的提醒自己,調(diào)用$的時(shí)候要用jQuery來代替,稍一疏忽,不僅出不來想要的效果,而且修改起來也是一個(gè)大工作量的任務(wù)??磥恚@種方法是行不通的。
難道就沒有一個(gè)一勞永逸的方法可以將這個(gè)$的"歸屬權(quán)"給明確的區(qū)分出來嗎?辦法當(dāng)然是有的!
方法二:使用jquery語句塊來實(shí)現(xiàn):
首先,來看一下jquery語句塊的格式:
(function($){ ..... $('#msg').show();//此時(shí)在這個(gè)語句塊中使用的都是jquery.js中定義的$. })(JQuery)
這樣,我們?cè)谡{(diào)用jquery中的$實(shí)現(xiàn)特效顯示時(shí),只要把這段代碼寫在這個(gè)語句塊中,$符號(hào)該怎么調(diào)用還怎么調(diào)用。而prototype.js中的$寫在語句塊外,$符號(hào)也是該怎么調(diào)用怎么調(diào)用,兩者根本不會(huì)產(chǎn)生什么影響了。
以上就是本文的全部?jī)?nèi)容,希望這個(gè)方法也能給遇到相同問題的其他人帶來幫助,也希望大家多多支持腳本之家。
- 解決jquery版本沖突的有效方法
- jQuery多個(gè)版本和其他js庫沖突的解決方法
- jquery插件沖突(jquery.noconflict)解決方法分享
- 解決jquery插件沖突的問題
- 解決jQuery插件tipswindown與hintbox沖突
- jQuery中 $ 符號(hào)的沖突問題及解決方案
- bootstrap與Jquery UI 按鈕樣式?jīng)_突的解決辦法
- 關(guān)于兩個(gè)jQuery(js)特效沖突的bug的解決辦法
- 完美解決jQuery符號(hào)$與其他javascript 庫、框架沖突的問題
- 避免jQuery名字沖突 noConflict()方法
- jQuery $命名沖突解決方案匯總
- jQuery插件版本沖突的處理方法分析
相關(guān)文章
javascript 歷史記錄 經(jīng)常用于產(chǎn)品最近歷史瀏覽
在很多購物網(wǎng)站,都有“產(chǎn)品的瀏覽歷史記錄”,這是個(gè)很貼心的功能。2009-05-05基于jquery的二級(jí)聯(lián)動(dòng)菜單實(shí)現(xiàn)代碼
基于jquery的二級(jí)聯(lián)動(dòng)菜單實(shí)現(xiàn)代碼,腳本之家簡(jiǎn)單整理了幾種。需要的朋友可以參考下,主要是思路2011-04-04jQuery實(shí)現(xiàn)簡(jiǎn)單日歷效果
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07jQuery事件之鍵盤事件(ctrl+Enter回車鍵提交表單等)
鍵盤事件處理所有用戶在鍵盤敲擊的情況,不管在文本輸入?yún)^(qū)域內(nèi)部還是外部,這里介紹下jquery鍵盤事件的相關(guān)知識(shí),需要的朋友可以參考下2014-05-05jQuery實(shí)現(xiàn)最簡(jiǎn)單的切換圖效果【可兼容IE6、火狐、谷歌、opera等】
這篇文章主要介紹了jQuery實(shí)現(xiàn)最簡(jiǎn)單的切換圖效果,可兼容IE6、火狐、谷歌、opera等瀏覽器,涉及jQuery結(jié)合時(shí)間函數(shù)動(dòng)態(tài)操作頁面元素的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-09-09jquery中g(shù)et和post的簡(jiǎn)單實(shí)例
本篇文章主要是對(duì)jquery中g(shù)et和post的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02