如何解決jQuery 和其他JS庫的沖突
在 jQuery 庫中,幾乎所有的插件都被限制在它的命名空間里。通常,全局對(duì)象都被很好地存儲(chǔ)在 jQuery 命名空間里,因此當(dāng)把 jQuery 和其他 JavaScript 庫(例如 Prototype、MooTools 或 YUI)一起使用時(shí),不會(huì)引起沖突。
注意:默認(rèn)情況下,jQuery 用 $ 作為自身的快捷方式。
1.jQuery庫在其他庫之后導(dǎo)入
在其他庫和 jQuery 庫都被加載完畢后,可以在任何時(shí)候調(diào)用 jQuery.noConflict() 函數(shù)來將變量 $ 的控制權(quán)移交給其他 JavaScript 庫。示例如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>沖突解決1</title>
<!-- 引入 prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
<!-- 引入 jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
</head>
<body>
<p id="pp">Test-prototype(將被隱藏)</p>
<p >Test-jQuery(將被綁定單擊事件)</p>
<script type="text/javascript">
jQuery.noConflict(); //將變量$的控制權(quán)讓渡給prototype.js
jQuery(function(){ //使用jQuery
jQuery("p").click(function(){
alert( jQuery(this).text() );
});
});
$("pp").style.display = 'none'; //使用prototype.js隱藏元素
</script>
</body>
</html>
然后,就可以在程序里將 jQuery() 函數(shù)作為 jQuery 對(duì)象的制造工廠。
此外,還有另一種選擇。如果想確保 jQuery 不會(huì)與其他庫沖突,但又想自定義一個(gè)快捷方式,可以進(jìn)行如下操作:
<script type="text/javascript">
var $j = jQuery.noConflict(); //自定義一個(gè)比較短快捷方式
$j(function(){ //使用jQuery
$j("p").click(function(){
alert( $j(this).text() );
});
});
$("pp").style.display = 'none'; //使用prototype.js隱藏元素
</script>
可以自定義備用名稱,例如 jq、$J、awesomequery 等。
如果不想給 jQuery 自定義這些備用名稱,還想使用 $ 而不管其他庫的 $() 方法,同時(shí)又不想與其他庫相沖突,那么可以使用以下兩種解決方法。
其一:
<script type="text/javascript">
jQuery.noConflict(); //將變量$的控制權(quán)讓渡給prototype.js
jQuery(function($){ //使用jQuery
$("p").click(function(){ //繼續(xù)使用 $ 方法
alert( $(this).text() );
});
});
$("pp").style.display = 'none'; //使用prototype
</script>
其二:
<script type="text/javascript">
jQuery.noConflict(); //將變量$的控制權(quán)讓渡給prototype.js
(function($){ //定義匿名函數(shù)并設(shè)置形參為$
$(function(){ //匿名函數(shù)內(nèi)部的$均為jQuery
$("p").click(function(){ //繼續(xù)使用 $ 方法
alert($(this).text());
});
});
})(jQuery); //執(zhí)行匿名函數(shù)且傳遞實(shí)參jQuery
$("pp").style.display = 'none'; //使用prototype
</script>
這應(yīng)該是最理想的方式,因?yàn)榭梢酝ㄟ^改變最少的代碼來實(shí)現(xiàn)全面的兼容性。
2.jQuery庫在其他庫之前導(dǎo)入
如果 jQuery 庫在其他庫之前就導(dǎo)入了,那么可以直接使用"jQuery”來做一些jQuery的工作。同時(shí),可以使用 $() 方法作為其他庫的快捷方式。這里無需調(diào)用 jQuery.noconflict() 函數(shù)。示例如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>沖突解決5</title>
<!-- 引入 jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<!-- 引入 prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
</head>
<body>
<p id="pp">Test-prototype(將被隱藏)</p>
<p >Test-jQuery(將被綁定單擊事件)</p>
<script type="text/javascript">
jQuery(function(){ //直接使用 jQuery ,沒有必要調(diào)用"jQuery.noConflict()"函數(shù)。
jQuery("p").click(function(){
alert( jQuery(this).text() );
});
});
$("pp").style.display = 'none'; //使用prototype
</script>
</body>
</html>
有了這些方法來解決沖突,就可以在項(xiàng)目中放心地引用 jQuery 了。
以上就是如何解決jQuery 和其他JS庫的沖突的詳細(xì)內(nèi)容,更多關(guān)于解決jQuery JS庫沖突的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Jquery來實(shí)現(xiàn)可以輸入值的下拉選單 雛型
最近案子中,需要使用下拉選單,但問題是,里面選項(xiàng)都會(huì)有各 其他:,然後 可以 讓 user 在輸入2011-12-12
jQuery使用drag效果實(shí)現(xiàn)自由拖拽div
本文給大家分享一款jquery實(shí)現(xiàn)的完美拖拽(拖動(dòng)div層效果),如果你正在找這類效果不妨進(jìn)入?yún)⒖家幌隆?/div> 2015-06-06
60個(gè)很實(shí)用的jQuery代碼開發(fā)技巧收集
這篇文章主要介紹了60個(gè)很實(shí)用的jQuery代碼開發(fā)技巧收集,使用jquery的朋友可以參考下核心代碼的使用,需要的朋友可以參考下2014-12-12
基于jQuery實(shí)現(xiàn)點(diǎn)擊同時(shí)更改兩個(gè)iframe的網(wǎng)址
最近寫了兩個(gè)管理后臺(tái)的前端頁面,其中有一個(gè)管理后臺(tái),左側(cè)菜單導(dǎo)航和右側(cè)內(nèi)容頁是兩個(gè)iframe,需求是,點(diǎn)擊上面的主導(dǎo)航時(shí),左側(cè)iframe和右側(cè)iframe調(diào)用不同的鏈接.2010-07-07
JQuery 簡(jiǎn)便實(shí)現(xiàn)頁面元素?cái)?shù)據(jù)驗(yàn)證功能
JQuery 簡(jiǎn)便實(shí)現(xiàn)頁面元素?cái)?shù)據(jù)驗(yàn)證功能...2007-03-03
jQuery扇形定時(shí)器插件pietimer使用方法詳解
這篇文章主要為大家詳細(xì)介紹了jQuery扇形定時(shí)器插件pietimer的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07最新評(píng)論

