小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Jquery的$命名沖突:

 小風(fēng)殘血 2014-12-21

在Jquery中,$是JQuery的別名,所有使用$的地方也都可以使用JQuery來替換,如$('#msg')等同于JQuery('#msg')的寫法。然而,當(dāng)我們引入多個js庫后,在另外一個js庫中也定義了$符號的話,那么我們在使用$符號時就發(fā)生了沖突。下面以引入兩個庫文件jquery.js和prototype.js為例來進(jìn)行說明。 
第一種情況:jquery.js在prototype.js之后進(jìn)行引入,如:

<script src="prototype.js" type="text/javascript"/> 
<script src="jquery.js" type="text/javascript"/>


在這種情況下,我們在自己的js代碼中如下寫的話:

$('#msg').hide(); 


$永遠(yuǎn)代表的是jquery中定義的$符號,也可以寫成JQuery('#msg').hide();如果想要使用prototype.js中定義的$,我們在后面再介紹。


第二種情況:jquery.js在prototype.js之前進(jìn)行引入,如: 

<script src="jquery.js" type="text/javascript"/> 
<script src="prototype.js" type="text/javascript"/>


在這種情況下,我們在自己的js代碼中如下寫的話:

$('#msg').hide(); 


$此時代表的prototype.js中定義的$符號,如果我們想要調(diào)用jquery.js中的工廠選擇函數(shù)功能的話,只能用全稱寫法JQuery('#msg').hide().

下面先介紹在第一種引入js庫文件順序的情況下,如何正確的使用不同的js庫中定義的$符號。

一.使用JQuery.noConflict() 
該方法的作用就是讓Jquery放棄對$的所有權(quán),將$的控制權(quán)交還給prototype.js,因為jquery.js是后引入的,所以最后擁有$控制權(quán)的是jquery。它的返回值是JQuery。當(dāng)在代碼中調(diào)用了該 方法以后,我們就不可以使用$來調(diào)用jquery的方法了,此時$就代表在prototype.js庫中定義的$了。如下:

JQuery.noConflict();

//此處不可以再寫成$('#msg').hide(),此時的$代表prototype.js中定義的$符號。
JQuey('#msg').hide();


自此以后$就代表prototype.js中定義的$,jquery.js中的$無法再使用,只能使用jquery.js中$的全稱JQuery了。


二.自定義JQuery的別名 
如果覺得第一種方法中使用了JQuery.noConflict()方法以后,只能使用JQuery全稱比較麻煩的話,我們還可以為JQuery重定義別名。如下:

var $j=JQuery.noConflict(); 
$j(
'#msg').hide();//此處$j就代表JQuery


自此以后$就代表prototype.js中定義的$,jquey.js中的$無法再使用,只能使用$j來作為jquey.js中JQuery的別名了。


三.使用語句塊,在語句塊中仍然使用jquery.js中定義的$,如下:

JQuery.noConflict(); 
JQuery(document).ready(function($){
$(
'#msg').hide();//此時在整個ready事件的方法中使用的$都是jquery.js中定義的$.
});

 

或者使用如下語句塊:

(function($){ 
.....
$(
'#msg').hide();//此時在這個語句塊中使用的都是jquery.js中定義的$.
})(JQuery)

 
如果在第二種引入js庫文件順序的情況下,如何使用jquery.js中的$,我們還是可以使用上面介紹的語句塊的方法,如:

復(fù)制代碼
代碼
<script src="jquery.js" type="text/javascript"/> 
<script src="prototype.js" type="text/javascript"/>
<script type="text/javascript">

(function($){
.....
$(
'#msg').hide();//此時在這個語句塊中使用的都是jquery.js中定義的$.
})(JQuery)
</script>
復(fù)制代碼


這種使用語句塊的方法非常有用,在我們自己寫jquery插件時,應(yīng)該都使用這種寫法,因為我們不知道具體工作過程中是如何順序引入各種js庫的,而這種語句塊的寫法卻能屏蔽沖突。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多