解决多类库冲突——“$”变量冲突问题

原创 2012年03月23日 09:44:02

解决多类库冲突——“$”变量冲突问题

因为在其他的javascript类库中,也会使用“$”变量作为类库对象的引用,比如Prototype。当一个页面需要同时使用两个脚本库时,就会产生冲突,导致“$”变量的引用不明确。

jQuery提供了jQuery.noConfilct()及其重载用来解决此问题,jQuery.noConflict函数有两个重载:

jQuery提供了jQuery.noConflict(extreme ),虽然官方类库提供了两个重载方法,但是javascript并支持重载,内部实现仅仅是一个函数,根据是否传入了参数而执行不同的处理。

jQuery.noConflict()的作用是将变量$的控制全转交给第一个实现他的那个库。如果extreme参数为“true”即表示同时将“jQuery”变量的控制权也转交出去。也许有的脚本中不仅仅占用了“$”变量而且连“jQuery”变量也占用了,比如:

jQuery.noConflict(true);

下面是一个同时使用jQuery类库和Prototype类库的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<metahttp-equiv="Content-Type" content="text/html; charset=utf-8"/>

         <title>jQueryStorm – 常见错误</title>

         <scriptsrc=”../jquery-1.7.0.js”  type=”text/javascript”></script>

</head>

<body>

         <!—页面本部分 -->

         <divid=”divMsg” style=”border:solid 1px #000000”;padding=20px;”>

                   [输出控制台 ]<br>

         </div>

         <!—尾部脚本块 –->

         <scripttype=”text/javascript”>

                   jQuery.noConfilct();

                   $(“divMag”).innerHTML=”writtenby Prototype”;           //调用Prototype

         </script>

</body>

</html>

在上面的例子中先引用了prototype的类库,在引用了jQuery类库。因为javascript文件是顺序执行的,所以如果不使用jQuery.noConflict(),”$”变量将被jQuery使用。使用“$”调用prototype类库时将失效。使用noConflict函数后,“$”变量重新被Prototy类库使用。

jQuery.noConflict()函数返回原“jQuery”变量本身,应用此原理可以改变“jQuery”变量的引用名称:

         $=jQuery.noConflict();

         $(“divMsg”).innerHTML=”writtenby Prototype”; //调用Prototype

         $$(“#divMsg”).html($$(“#divMsg”).html()+”<br/>”+”writtenby jquery”);  //调用jQuery

上例子中将“jQuery”变量的引用赋给了“$$”变量,则可以使用”$”调用Prototype类库,使用“$$”调用jQuery类库。


解决线程同步带来的访问冲突问题

线程的同步也可以称为并发,由于进程是处理机分配资源的最小单位, 就会出现多个线程共同享用一个资源的想象,在带来方便的同时也带来了访问资源冲突这个严重的问题, JAVA语言在提供了专门机制解决这种冲...
  • Bazingaea
  • Bazingaea
  • 2016年05月30日 16:41
  • 1723

解决常见svn冲突问题

一个大项目在开发中可能会拆分成几个小项目,分别分去,同时共通的部分再由人做,做完后再统一合并。同时,在开发中,共通的部分修改后,其它人要保持同步。                 在这个开发过程...
  • gong_xucheng
  • gong_xucheng
  • 2015年08月03日 14:09
  • 34817

互联网线上项目开发最大坑点-并发冲突处理

互联网线上项目开发最大坑点-并发冲突处理大家可能都有这样的经验,自个儿在家里很多功能很容易实现,一下就做完了,但是在做线上产品的时候,就变得无比复杂,需要花费很多的时间。自己写的程序在家跑,所有的业务...
  • caopeng26
  • caopeng26
  • 2016年08月24日 21:25
  • 1947

hash冲突的解决方法以及hashMap的底层实现

大家平时都用过hashMap,但是可能大家对hashMap的底层实现不太了解,这几天也稍微了解下,记录下来,以免遗忘。 如上图,我们需要了解一下hash表(散列), 首先散列的目的是要使用一个对象来查...
  • qq_25901775
  • qq_25901775
  • 2016年03月19日 11:25
  • 4555

线程中的冲突问题

我们知道,对于一个Thread的对象t,当调用start方法后,该线程就会一直执行。 那么什么是线程中的冲突问题呢?如果现在有两个线程t1、t2,并且这两个线程中的run方法同时操作同一数据,就比如...
  • huai814586181
  • huai814586181
  • 2015年03月26日 20:31
  • 770

解决java多个版本冲突问题

我之前安装过1.7版本的java,这次学习又安装了1.8版本的,在控制台进行编译java文件的时候会报错,输入java -version查询版本的时候会出现has value ‘1.8’ but ‘1...
  • zhijianhuiyi
  • zhijianhuiyi
  • 2017年11月16日 18:47
  • 185

html中解决jquery多版本冲突问题

摘录自:http://www.111cn.net/wy/jquery/75289.htm jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留...
  • yxtouch
  • yxtouch
  • 2016年01月04日 17:54
  • 569

SVN冲突解决和注意事项

在我们用VS进行项目合作开发的过程中,SVN的提交控制是至关重要的,大家不可避免的都遇到过SVN冲突的问题,开发的时候,应该认真学习SVN的知识,减少冲突,集中时间放在开发上。     解决冲突有...
  • u013045552
  • u013045552
  • 2015年12月20日 21:56
  • 3893

Git解决分支冲突及分支管理策略

Git解决分支冲突及分支管理策略 解决分支冲突         通常当Git无法自动合并分支时,就必须首先解决冲突后,再提交。 下面咱们先创建一个分支并切换到b1分支: 修...
  • bestlove12345
  • bestlove12345
  • 2016年07月06日 10:13
  • 1191

Android Studio-SVN代码下载,提交,冲突解决方案

1.安装 TortoiseSvn 服务器端 下载地址http://tortoisesvn.net/downloads.html 1.1>1.8以上版本安装时注意注:可选择安装...
  • a937896607
  • a937896607
  • 2016年02月19日 00:10
  • 5061
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决多类库冲突——“$”变量冲突问题
举报原因:
原因补充:

(最多只允许输入30个字)