jQuery与其它库冲突的解决方法(转)

原文出处:http://www.jb51.net/article/24014.htm

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它javascript类库一起使用时,不会引起冲突.

(注意:默认情况下,jQuery用$作为自身的缩写而以) 
如果jQuery类库和别的类库冲突的话,可以使用jQuerynoConflict()函数来将变量$的控制权移交出给其它的javaScipt库。看下面小片断代码 
<script
type="text/javascript"
src="../JS/JsCOM.js"></script> 
<script
type="text/javascript"
src="../jQuery/jquery-1.3.2-vsdoc2.js"></script> 
假设JsCOM.js库中,有这样一个函数


1 function $(objName) {
2 if (document.getElementById) {
3 return eval(‘document.getElementById("‘ + objName + ‘")‘)
4 }
5 else {
6 return eval("document.all." + objName)
7 }

大家都知道jQuery里面也一个这样的函数,为了不引起冲突,我们将jQuery的变量$的控制权移交出给别的javascript库


1 jQuery.noConflict(); //将变量$的控制权移交给JsCOM.js
2 var $cr = jQuery("#cr"); //照样使用jQuery类库,只是用jQuery代替了原来的$而以。
3 var JsCOM_cr = $("cr"); //使用JsCOM.js类库

在这里可以把jQuery()函数作为jQuery对象的制造工厂. 
在这里要注意几点 
1.引用javascript类库时,一定要把jQuery引用放在最后面,就像上面一样,JsCOM.js的引用在jQuery引用的前面(具体原因我也不知,不过确实需要这样) 
2.特别要注意jQuery()代替$()时,jQuery是区分大小写的,因为javascript本身就是区分大小写的(好像说这个有点多余,不过还是希望大家不要犯这种错误) 
基本上根据上面的
方法就可以解决jQuery和其它库的冲突问题了! 
如果你觉得上面的方式不爽,每次都要打jQuery来代替$增加了您敲键盘的工作量,那请接着看。。 
除上面之外,还有另一种选择。如果想确保jQuery不会与其它库冲突,但又想自定义一个快捷方式,可以进行如下操作;


1 var $j = jQuery.noConflict(); //自定一个快捷方式
2 var $cr = $j("#cr"); //使用jQuery类库,得用自定义快捷方式----$j;
3 var JsCOM_cr = $("cr"); //和上一段代码一样,使用的是JsCOM.js类库

如果您还有别的要求,想继续使用原先的$(),同时还需要与别的类库不冲突的话,还有两种解决方法 
其一:


jQuery.noConflict(); //将变量$的控制权让给JsCOM.js
jQuery(function($)
{
$("p").click(function() //在函数内继续可以使用jquery类库的$()方法
{
alert($(this).text());
})
})
var JsCOM_cr = $("cr"); // 在函数外面,照样可以使用JsCOM.js的$()方法

其二:


jQuery.noConflict(); //将变量$的控件权移交给别的类库,使用jquery类库的$符号时,请使用jQuery("#id");
(function($) { //定义匿名函数并设置形参为$
$(function() { //匿名函数内部的$均为jQuery
$("div").click(function() {//继续使用$()方法
alert($(this).text());
})
})
})
(jQuery); //使用匿名函数且传递实参jQUery
alert($("cr")); //使用的是jsCOM.js类库中的$()函数

第二种方法应该是兼容旧的代码最好的方式,修改的代码是最少的! 
不过如果是新写的jQuery代码,我还是比较喜欢使用刚开始讲的那种(jQuery.noConflict(),然后就使用jQuery("#id"),这种方式) 
如果您的页面是先引用jQuery类库再引入别的类库的话,那么我们可以直接使用jQuery来做一些工作,同时,可以使用$()方法作为其它库的快捷方式。这里无需调用jQuery.noConflict()函数,请看下面代码

<script type="text/javascript"
src="../jQuery/jquery-1.3.2-vsdoc2.js"></script> 
<script
type="text/javascript"
src="../JS/JsCOM.js"></script> 
jQuery().ready(function()
{ //无需调用jQuery.noConflict()函数 
var $cr =
jQuery("#cr"); 
$cr.click(function()

if ($cr.is(":checked"))

alert("感谢你的支持!你可以继续操作了.."); 

}) 
}) 
alert($("cr"));
//使用的是jsCOM.js类库中的$()函数

好了,看了上面这么多种方法来解决冲突,这下你可以放心的在您的项目中引用jQuery了吧 :)

jQuery与其它库冲突的解决方法(转),布布扣,bubuko.com

时间: 2024-07-30 10:13:45

jQuery与其它库冲突的解决方法(转)的相关文章

query和prototype库冲突的解决方法

我们在使用 jQuery 的过程中我们会频繁使用 $ 符号,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,例如 如$('#msg')等同于JQuery('#msg')的写法. 在页面中同时引入另一个js类库,并且该类库也是用了 $ 符号时,$ 代表的变量将被覆盖.例如 prototype.js. 我们举个例子: A.jquery.js 在 prototype.js 之前引入 <script src="jquery.js" type="text/

git 本地库推送远程库 版本冲突的解决方法

参考: http://blog.csdn.net/shiren1118/article/details/7761203 github上的版本和本地版本冲突的解决方法 $ git push XXX master把本地master分支的最新修改推送至远程库XXX Username for 'https://github.com': shiren1118Password for 'https://[email protected]': To https://github.com/shiren1118/

二、jQuery和其他库冲突

默认情况下,jQuery用$作为自身的快捷方式. 如同时导入jQuery和prototype库. 一.jQuery库在其他库之后导入 1.移交控制权 jQuery.noConflict();//将变量$的控制权让渡给prototype.js jQuery(function(){//使用jQuery jQuery("p").click(function(){ }); }); $("pp").style.display = 'none'; //使用prototype 2

关于Android滑动冲突的解决方法(二)

之前的一遍学习笔记主要就Android滑动冲突中,在不同方向的滑动所造成冲突进行了了解,这样的冲突非常easy理解,当然也非常easy解决.今天,就同方向的滑动所造成的冲突进行一下了解,这里就先以垂直方向的滑动冲突为背景,这也是日常开发中最常见的一种情况. 这里先看一张效果图 由于GIF 图片大小的限制.截图效果不是非常好 上图是在购物软件上常见的上拉查看图文详情,关于这中动画效果的实现.事实上实现总体的效果,办法是有非常多的,网上有非常多相关的样例,可是对某些细节的处理不是非常清晰.比方,下拉

Unity 深度冲突的解决方法

Dillon|2014-02-12 10:00|5899次浏览|Unity(280)0 3d游戏中当2个片元距离近裁减平面 w  落在同一个区间的时候,他们的深度是相等的. 最终你所看到的结果,就是下面的这种样子: 注意到蓝色线框里面. 要解决这个问题, 你只要google 或者去 beyond3d,等论坛,搜索 depth fighting ,得到的答案往往就是设置深度偏移. OpenGL : Polygon offset. D3D: Depth Bais. 拿OpenGL 来说,就是对有存在

Linux下检测IP地址冲突及解决方法

Linux下检测IP地址冲突及解决方法 问题说明: 在公司办公网内的一台物理机A上安装了linux系统(ip:192.168.9.120),在上面部署了jenkins,redmine,svn程序.由于是在办公网内,这台机器和同事电脑都是在同一网段的. 突然某天问题出来了:有部分同事远程ssh登陆不上这台linux系统的机器,jenkins/redmine/svn也登陆不上,其他部分同事可以正常使用. 后来发现,是因为这台linux机器的ip被人占用了,ip地址冲突引起的!! 下面介绍下检查ip地

Hyper-V与VirtualBox或VMware虚拟机软件冲突的解决方法(VirtualBox只能创建32位虚拟机)

Hyper-V与VirtualBox或VMware虚拟机软件冲突的解决方法 Hyper-V是微软的虚拟化软件,功能类似VirtualBox.VMware,可以用来创建虚拟机. 虚拟化软件都是基于CPU等底层硬件的Hypervisor机制来实现的,而他们必须独占管理 Hypervisor,因此不能在一台电脑中同时运行多个虚拟化软件.由于Hyper-V与VirtualBox.VMware不能共存,因此当Hyper-V打开时,VirtualBox.VMware就不能正常工作了.目前还没有找到Virtu

小程序云开发调用HTTP请求中got第三方库使用失败解决方法

小程序云开发调用HTTP请求中got第三方库使用失败解决方法 错误代码 {"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"The \"original\" argument must be of type function"} 替换方案 // 云函数入口文件 const cloud = req

ECSHOP中transport.js和jquery冲突的解决方法

jQuery 和global.js 冲突 百度和google多次,根据网上的大多数建议和自己测试,解决办法如下:删除global.js 或者global.js 文件的10-13行屏蔽//Object.prototype.extend = function(object)//{// return Object.extend.apply(this, [this, object]);//}并且希望官网的人能解释下 global.js 文件的实际用处,上面的解决办法影响平台不 在html文件的最后面添加