在jQuery中使用$而避免跟其它庫(kù)產(chǎn)生沖突的方法
在Jquery中,$是JQuery的別名,所有使用$的地方也都可以使用JQuery來(lái)替換,如$('#msg')等同于JQuery('#msg')的寫法。然而,當(dāng)我們引入多個(gè)js庫(kù)后,在另外一個(gè)js庫(kù)中也定義了$符號(hào)的話,那么我們?cè)谑褂?符號(hào)時(shí)就發(fā)生了沖突。下面以引入兩個(gè)庫(kù)文件jquery.js和prototype.js為例來(lái)進(jìn)行說(shuō)明。
第一種情況:jquery.js在prototype.js之后進(jìn)行引入,如:
<script src="prototype.js" type="text/javascript"/> <script src="jquery.js" type="text/javascript"/>
在這種情況下,我們?cè)谧约旱膉s代碼中如下寫的話:
$('#msg').hide();
$永遠(yuǎn)代表的是jquery中定義的$符號(hào),也可以寫成JQuery('#msg').hide();如果想要使用prototype.js中定義的$,我們?cè)诤竺嬖俳榻B。
第二種情況:jquery.js在prototype.js之前進(jìn)行引入,如:
<script src="jquery.js" type="text/javascript"/> <script src="prototype.js" type="text/javascript"/>
在這種情況下,我們?cè)谧约旱膉s代碼中如下寫的話:
$('#msg').hide();
$此時(shí)代表的prototype.js中定義的$符號(hào),如果我們想要調(diào)用jquery.js中的工廠選擇函數(shù)功能的話,只能用全稱寫法JQuery('#msg').hide().
下面先介紹在第一種引入js庫(kù)文件順序的情況下,如何正確的使用不同的js庫(kù)中定義的$符號(hào)。
一.使用JQuery.noConflict()
該方法的作用就是讓Jquery放棄對(duì)$的所有權(quán),將$的控制權(quán)交還給prototype.js,因?yàn)閖query.js是后引入的,所以最后擁有$控制權(quán)的是jquery。它的返回值是JQuery。當(dāng)在代碼中調(diào)用了該 方法以后,我們就不可以使用$來(lái)調(diào)用jquery的方法了,此時(shí)$就代表在prototype.js庫(kù)中定義的$了。如下:
JQuery.noConflict();//此處不可以再寫成$('#msg').hide(),此時(shí)的$代表prototype.js中定義的$符號(hào)。 JQuey('#msg').hide();
自此以后$就代表prototype.js中定義的$,jquery.js中的$無(wú)法再使用,只能使用jquery.js中$的全稱JQuery了。
將 jQuery 設(shè)置為 no-conflict 模式后,可以給$設(shè)置個(gè)別名:
<script src="prototype.js"></script> <script src="jquery.js"></script> <script>var $j = jQuery.noConflict();</script>
如果還想繼續(xù)是用 jQuery 的$,需要將代碼包含在一個(gè)自執(zhí)行的函數(shù)內(nèi),這也是一些 jQuery 插件作者的通用做法,因?yàn)檫@些作者并不知道項(xiàng)目中是否引用了其它庫(kù):
<script src="prototype.js"></script> <script src="jquery.js"></script> <script> jQuery.noConflict(); (function($) { // 這里依然可以繼續(xù)使用 jQuery 的 $ })(jQuery); </script>
二.自定義JQuery的別名
如果覺得第一種方法中使用了JQuery.noConflict()方法以后,只能使用JQuery全稱比較麻煩的話,我們還可以為JQuery重定義別名。如下:
var $j=JQuery.noConflict(); $j('#msg').hide();//此處$j就代表JQuery
自此以后$就代表prototype.js中定義的$,jquey.js中的$無(wú)法再使用,只能使用$j來(lái)作為jquey.js中JQuery的別名了。
三.使用語(yǔ)句塊,在語(yǔ)句塊中仍然使用jquery.js中定義的$,如下:
JQuery.noConflict(); JQuery(document).ready(function($){ $('#msg').hide(); //此時(shí)在整個(gè)ready事件的方法中使用的$都是jquery.js中定義的$. });
或者使用如下語(yǔ)句塊:
(function($){ ..... $('#msg').hide();//此時(shí)在這個(gè)語(yǔ)句塊中使用的都是jquery.js中定義的$. })(JQuery)
如果在第二種引入js庫(kù)文件順序的情況下,如何使用jquery.js中的$,我們還是可以使用上面介紹的語(yǔ)句塊的方法,如:
<script src="jquery.js" type="text/javascript"/> <script src="prototype.js" type="text/javascript"/> <script type="text/javascript"> (function($){ ..... $('#msg').hide();//此時(shí)在這個(gè)語(yǔ)句塊中使用的都是jquery.js中定義的$. })(JQuery) </script>
代碼
<script src="jquery.js" type="text/javascript"/> <script src="prototype.js" type="text/javascript"/> <script type="text/javascript"> (function($){ ..... $('#msg').hide(); //此時(shí)在這個(gè)語(yǔ)句塊中使用的都是jquery.js中定義的$. })(JQuery) </script>
這種使用語(yǔ)句塊的方法非常有用,在我們自己寫jquery插件時(shí),應(yīng)該都使用這種寫法,因?yàn)槲覀儾恢谰唧w工作過(guò)程中是如何順序引入各種js庫(kù)的,而這種語(yǔ)句塊的寫法卻能屏蔽沖突。
相關(guān)文章
多個(gè)datatable共存造成多個(gè)表格的checkbox都被選中
所以當(dāng)有多個(gè)datatable 引用到一個(gè)頁(yè)面中的時(shí)候,全選事件會(huì)匹配全部的datatable,所以造成全部多個(gè)表格的checkbox被都被選中2013-07-07正則驗(yàn)證小數(shù)點(diǎn)后面只能有兩位數(shù)的方法
下面小編就為大家?guī)?lái)一篇正則驗(yàn)證小數(shù)點(diǎn)后面只能有兩位數(shù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02簡(jiǎn)單易用的基于jQuery版仿新浪微博向下滾動(dòng)效果(附DEMO)
jquery版,簡(jiǎn)單易用的jQuery 版仿新浪微博 向下滾動(dòng)效果,現(xiàn)在越來(lái)越發(fā)現(xiàn)jquery太強(qiáng)大咯,哈哈。2011-02-02jQuery插件echarts實(shí)現(xiàn)的多折線圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件echarts實(shí)現(xiàn)的多折線圖效果,結(jié)合完整實(shí)例形式分析了echarts插件繪制多折線圖效果的具體步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03jquery jqPlot API 中文使用教程(非常強(qiáng)大的圖表工具)
這里貢獻(xiàn)上中文教程,基本上所有的api都很齊全,供有需要的童鞋們瞧瞧,更重要的是作為自己滴收藏2011-08-08jquery對(duì)復(fù)選框(checkbox)的操作匯總
本文給大家匯總介紹了一些jQuery操作復(fù)選框(checkbox)的方法和技巧,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2016-01-01jquery圖片不完全按比例自動(dòng)縮小的簡(jiǎn)單代碼
開發(fā)前期用自動(dòng)生產(chǎn) 固定大小的圖片 進(jìn)行 顯示,發(fā)現(xiàn)不能滿足,在前期的時(shí)候把保存了原圖,現(xiàn)在只能顯示原圖,原圖由于上傳時(shí)候沒有做任何限制所有要使用 圖片不完全按比例縮小,下面是代碼2013-07-07淺談jQuery hover(over, out)事件函數(shù)
下面小編就為大家?guī)?lái)一篇淺談jQuery hover(over, out)事件函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦2016-12-12