问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何解决jquery与第三方插件库冲突问题

发布网友 发布时间:2022-05-15 06:56

我来回答

2个回答

懂视网 时间:2022-05-15 11:17

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。通常,全局对象都被很好地储存在jQuery的命名空间里,所以当把jQuery库和其他js库(Prototype,MooTools或YUI)一起使用时,不会引起冲突。

注意:默认情况下jQuery用“$”作为自身的快捷方式。

当我们使用的其他JavaScript库也是以"$"作为快捷方式时,这个时候如何解决jQuery和其他库的冲突呢?

1、jQuery库在其他库之后导入

(1)使用"jQuery"全名代替"$"

在其他库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数将变量$的控制权移交给其他JavaScript库。

示例:

//...省略其他代码
<p id="pp">Text-prototype(将被隐藏)</p>
<p>Text-jQuery(将被绑定单击事件)</p>
<!-- 引入prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
<!-- 引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<script>
 jQuery.noConflict();   //将变量$的控制权让渡给prototype.js
 jQuery(function(){   //使用jQuery
 jQuery("p").click(function(){
  alert( jQuery(this).text() );
 })
})
$("pp").style.display = 'none';  //使用prototype隐藏元素
</script>

然后就可以在程序里将jQuery()函数作为jQuery对象的制造工厂。

(2)自定义快捷方式

可以自定义备用名称,例如jq,$j等等。示例:

var $j = jQuery.noConflict(); //自定义一个快捷方式
$j(function(){   //使用jQuery,利用自定义快捷方式——$j
 $j("p").click(function(){
 alert( $j(this).text() );
 })
})
$("pp").style.display = 'none'; //使用prototype.js隐藏元素

(3)使用$而不与其他库冲突

如果不想给jQuery自定义这些备用名称,还想使用$而不管其他库的$()方法,同时又不想与其他库冲突,可以使用以下两种解决方法。

其一:

jQuery.noConflict();   //将变量$的控制权让渡给prototype.js
jQuery(function($){   //使用jQuery设定页面加载时执行的函数
 $("p").click(function(){  //在函数内部继续使用 $()方法
 alert( $(this).text() );
 })
})
$("pp").style.display = 'none'; //使用prototype

其二:

jQuery.noConflict();   //将变量$的控制权让渡给prototype.js
(function($){    //定义匿名函数并设置形参为$
 $(function(){    //匿名函数内部的$均为jQuery
 $("p").click(function(){  //继续使用 $ 方法
  alert( $(this).text() );
 });
 });
})(jQuery);    //执行匿名函数且传递实参jQuery
$("pp").style.display = 'none';  //使用prototype

这是一种最理想的方式,可以通过改变最少的代码来实现全面的兼容性。

2、jQuery库在其他库之前导入

如果jQuery库在其他库之前导入,那么$()的控制权默认归属于后面导入的JavaScript库。可以直接使用“jQuery”来做一些工作。同时,可以使用$()方法作为其他库的快捷方式。这里无需调用jQuery.noConflict()函数。示例:

<!-- 先导入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<!-- 后导入prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>

<p id="pp">Test-prototype(将被隐藏)</p>
<p >Test-jQuery(将被绑定单击事件)</p>

<script>
jQuery(function(){   //直接使用 jQuery ,无需调用"jQuery.noConflict()"函数
 jQuery("p").click(function(){ 
 alert( jQuery(this).text() );
 });
});
$("pp").style.display = 'none'; //使用prototype
</script>

热心网友 时间:2022-05-15 08:25

如果你指的是$符冲突的话,用jQuery.noConflict();释放jQuery对$符的使用权,让另一个插件库使用,用jQuery('body')来代替$('body')这种写法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
sometimesome timesometimessome times的区别 瓜地的午餐怎么造句 夏季宝宝不吃饭应该怎么办 狼人杀里面的白狼王模式怎么玩? 狼人杀白狼王和骑士:操作至上的高效玩法指南 狼人杀手游白狼王怎么玩 详细玩法攻略 狼人杀 狼人杀的白狼王怎么玩? 国产轮毂品牌有哪些 国产轮毂品牌哪个品牌好 国内轮毂有哪些品牌 岗位和职务怎么填 看电视能不能用家庭影院 用家庭影院看电影、听歌是什么样的体验? 真正能挣钱的手机游戏或,软件 中国移动的家庭影院好用吗? 豆腐脑点不好,怎么办去哪培训好那 为什么我的微信没有红包功能? spoonful什么意思 什么是单位名词 heaped tablespoonfuls什么意思 A spoonful of Devotion是什么意思? 任凭弱水三千,只取一瓢饮。英文翻译下 OPPO R11颜值升级,跟以前到底 有什么不同 spoonful 是什么意思 淘宝开店怎么开店铺 求投资咨询有限公司合同范本,和如何躲避风险,帮助成功追加100分 专项法律服务合同范本委托代理合同真假 请问长春哪里可以办理商业承兑汇票没到期提现的业务 悟空传下载 悟空传txt下载,悟空传txt全集下载 求《《悟空传》》全文免费下载百度网盘资源,谢谢~ 如何理解ppp收益和绩效的关系 请问您那边有PPP项目绩效考核评估这一类咨询项目的收费标准吗? ppp 运维绩效服务费要交税吗 怎么样做长为四倍的根号三宽为二倍的根号三高为根号三的长方体? 仲裁是一裁终局吗? 仲裁裁决为终局裁决 什么是仲裁一裁终局制度 基础防水需要注意些什么 安阳卫生间防水怎么做,价格。联系电话。 女人例假和潮汐关系吗 如何解决Jquery库及其他库之间的$命名冲突 澳门和香港社会保障有什么差别 为什么身边好多人都去香港买保险,那边的保险和内地保险有什么区别如果要买的话怎么买 东北蒜蓉茄子怎么做 最什么不过肉桂 电脑怎么登录两个 电脑上上两个 电信宽带路由器正常上网电脑连接不上网 激光测距仪有哪些零件 校园电信路由器哪几个灯亮着是正常