全部課程
發(fā)布時(shí)間: 2018-09-24 13:02:52
?四.解決jQuery和其他庫(kù)的沖突
當(dāng)一個(gè)項(xiàng)目中引入多個(gè)第三方庫(kù)的時(shí)候,由于沒(méi)有命名空間的約束(命名空間就好比同一個(gè)目錄下的文件夾一樣,名字相同就會(huì)產(chǎn)生沖突),庫(kù)與庫(kù)之間發(fā)生沖突在所難免。
那么,既然有沖突的問(wèn)題,為什么要使用多個(gè)庫(kù)呢?原因是 jQuery 只不過(guò)是 DOM 操作為主的庫(kù),方便日常 Web 開(kāi)發(fā)。但有時(shí),項(xiàng)目有更多特殊的功能需要引入其他的庫(kù),比如用戶(hù)界面 UI 方面的庫(kù),游戲引擎方面的庫(kù)等等一系列。
而很多庫(kù),比如 prototype、還有JavaScript 的 Base 庫(kù),都使用“$”作為基準(zhǔn)起始符,如果想和 jQuery 共容有兩種方法:
1.將 jQuery.js 庫(kù)在 Base.js 庫(kù)之前引入,那么“$”的所有權(quán)就歸 Base 庫(kù)所有,而 jQuery 可以直接用 jQuery 對(duì)象調(diào)用,或者創(chuàng)建一個(gè)“$$”符給 jQuery 使用。
var
$$ = jQuery; //創(chuàng)建一個(gè)$$的 jQuery對(duì)象
jQuery
$(function () { //這是
Base 的$
$
alert($('#box').ge(0)); //這是 Base 的 $
$ alert($$('#box').get()); //這是 jQuery 的$$
});
2.如果將 jQuery.js 庫(kù)在 Base.js 庫(kù)之后引入,那么“$”的所有權(quán)就歸 jQuery 庫(kù)所有,而 Base 庫(kù)將會(huì)沖突而失去作用。這里,jQuery 提供了一個(gè)方法:
jQuery.noConflict();
//將$符所有權(quán)剔除
var
$$ = jQuery;
$(function
() {
alert($('#box').ge(0));
alert($$('#box').get());
});