jQuery解決$符號命名沖突
前些天朋友讓我?guī)退鉀Q一個頁面中jquery特效的兼容性問題,覺得這是一個很容易忽略也很重要的一點,特在此記錄一下。
朋友給的頁面中用到了三個特效,其中兩個特效可以顯示,第三個沒有效果。通過查看引用的js文件,我發(fā)現(xiàn)頁面中不光引入了jquery.js,還引入了一個名為prototype.js的文件。 這個prototype.js之前未曾聽說過,特意在百度上搜了一下,原來它也是一個js類庫,功能和jquery差不多,而且很強大。
通過一點點的排查,我發(fā)現(xiàn)那兩個可以顯示的特效引用的是jquery,而不顯示的那個特效引用的是這個prototype.js。 稍一分析,終于找到了出錯的關鍵:jquery中的$和prototype.js中的$沖突了,兩個類庫中都是通過$符號來調用,然而如果直接這樣寫的話就會不知道這個$是屬于誰的,該調用哪個類庫中的方法來實現(xiàn)特效的顯示。
既然找到了問題的根結所在,那這個問題也就好解決了。
方法一:在jquery中,有這樣一段代碼:
// Expose jQuery to the global object window.jQuery = window.$ = jQuery;
也就是說,我們可以通過jQuery來代替jquery.js中的$符號進行調用,前提必須聲明一下:
jQuery = $;
那,新的問題又出現(xiàn)了。頁面中有那么多地方用到了$,我不僅要區(qū)分到底哪些$是屬于jquery的,還要將這些$替換成jQuery這個單詞,更嚴重的是,如果該頁面中要增加新的jquery特效,我還要時刻的提醒自己,調用$的時候要用jQuery來代替,稍一疏忽,不僅出不來想要的效果,而且修改起來也是一個大工作量的任務。看來,這種方法是行不通的。
難道就沒有一個一勞永逸的方法可以將這個$的"歸屬權"給明確的區(qū)分出來嗎?辦法當然是有的!
方法二:使用jquery語句塊來實現(xiàn):
首先,來看一下jquery語句塊的格式:
(function($){
.....
$('#msg').show();//此時在這個語句塊中使用的都是jquery.js中定義的$.
})(JQuery)
這樣,我們在調用jquery中的$實現(xiàn)特效顯示時,只要把這段代碼寫在這個語句塊中,$符號該怎么調用還怎么調用。而prototype.js中的$寫在語句塊外,$符號也是該怎么調用怎么調用,兩者根本不會產(chǎn)生什么影響了。
以上就是本文的全部內容,希望這個方法也能給遇到相同問題的其他人帶來幫助,也希望大家多多支持腳本之家。
- 解決jquery版本沖突的有效方法
- jQuery多個版本和其他js庫沖突的解決方法
- jquery插件沖突(jquery.noconflict)解決方法分享
- 解決jquery插件沖突的問題
- 解決jQuery插件tipswindown與hintbox沖突
- jQuery中 $ 符號的沖突問題及解決方案
- bootstrap與Jquery UI 按鈕樣式?jīng)_突的解決辦法
- 關于兩個jQuery(js)特效沖突的bug的解決辦法
- 完美解決jQuery符號$與其他javascript 庫、框架沖突的問題
- 避免jQuery名字沖突 noConflict()方法
- jQuery $命名沖突解決方案匯總
- jQuery插件版本沖突的處理方法分析
相關文章
jquery通過擴展select控件實現(xiàn)支持enter或focus選擇的方法
這篇文章主要介紹了jquery通過擴展select控件實現(xiàn)支持enter或focus選擇的方法,通過jQuery針對select空間增加enter及focus選擇功能分析了jQuery擴展的相關實現(xiàn)技巧,需要的朋友可以參考下2015-11-11
JQuery 表單中textarea字數(shù)限制實現(xiàn)代碼
textarea中的字數(shù)的限制是在1000個之內,下面是具體的實現(xiàn)代碼,基本上會點jquery的能看懂,不懂的可以學習下jquery,當期比較流行了,要不就落伍了。2009-12-12
增強用戶體驗友好性之jquery easyui window 窗口關閉時的提示
在項目中,客戶提出這么個要求,就是在關閉彈出的窗口的時候,如果點擊 紅X 或 取消按鈕 則提示 ”確認保存了當前的操作“ 這么個信息,否則就不提示啦2012-06-06

