第一种情况:先加载Prototype,再加载jQuery
方法一:jQuery 库和它的所有插件都是在jQuery名字空间内的,包括全局变量也是保存在jQuery 名字空间内的。

使用jQuery.noConflict();主要作用是在任何时候,只要在jQuery加载后就可以调用,将$符号的使用权返回给其它的js库,jQuery在创建它自己的名字空间时就将其它库的$保存在自己的一个变量当中。

  1. <html>
  2. <head>
  3. <script src="prototype.js"></script>
  4. <script src="jquery.js"></script>
  5. <script type="text/javascript" >
  6. //各个js库之间的主要冲突在于$的冲突,这个方法是用来处理这个问题的
  7. jQuery.noConflict();
  8. //原本使用jQuery代码部分的$ 用jQuery替代
  9. jQuery(document).ready(function (){
  10. jQuery("div").hide();
  11. });
  12. // Use Prototype with $(...), etc.
  13. $('proto').hide();
  14. </script>
  15. </head>
  16. <body></body>
  17. </html>

方法二:如果你仍然想使用类似于$这样比较简短的字符,你可以将jQuery.noConflict()的返回值赋值给某个变量。这个变量就是jQuery的新缩写了,当然你可以使用$以外的任意字符串,比如:

  1. <html>
  2. <head>
  3. <script src="prototype.js"></script>
  4. <script src="jquery.js"></script>
  5. <script type="text/javascript" >
  6. //$j就相当于jQuery,名称你可以自主定义
  7. var  $j = jQuery.noConflict();
  8. // Use jQuery via $j(...)
  9. $j(document).ready(function (){
  10. $j("div").hide();
  11. });
  12. // Use Prototype with $(...), etc.
  13. $('proto').hide();
  14. </script>
  15. </head>
  16. <body></body>
  17. </html>

方法三:如果你还是想使用$,而不想使用别的字符,也是可以的。而且通常程序员都比较喜欢这样做,因为这样做写好的代码几乎都不用替换原来的$符号。那就是利用名字空间的概念就所有的jQuery代码封装在document的ready事件名字空间范围内,如:jQuery(document).ready(这里填入jQuery代码)

  1. <html>
  2. <head>
  3. <script src="prototype.js"></script>
  4. <script src="jquery.js"></script>
  5. <script type="text/javascript" >
  6. jQuery.noConflict();
  7. // Put all your code in your document ready area
  8. jQuery(document).ready(function ($){
  9. // 这样你可以在这个范围内随意使用$而不用担心冲突
  10. $("div" ).hide();
  11. });
  12. // Use Prototype with $(...), etc.
  13. $('proto' ).hide();
  14. </script>
  15. </head>
  16. <body></body>
  17. </html>

第二种情况:先加载jQuery,再加载Prototype

按照这样的顺序加载,就不存在其它js库的$符号被jQuery占用的问题。所以对其它的js库的代码可以不作任何修改,照常使用$,而对 jQuery可以使用jQuery来替代$.如:

  1. <html>
  2. <head>
  3. <script src="jquery.js"></script>
  4. <script src="prototype.js"></script>
  5. <script type="text/javascript" >
  6. // 使用 jQuery 用 jQuery(...)
  7. jQuery(document).ready(function (){
  8. jQuery("div" ).hide();
  9. });
  10. // 使用 Prototype 时,用 $(...),
  11. $('someid' ).hide();
  12. </script>
  13. </head>
  14. <body></body>
  15. </html>

或者你不想写jQuery这么长的字符,你可以通过另外一种方法:

    1. var  $j = jQuery;

jQuery和Prototype的兼容性和冲突的五种解决方法的更多相关文章

  1. jQuery和Prototype的兼容性和冲突的多种解决方法

    有两种情况: 1.先加载Prototype,再加载jQuery. 2.先加载jQuery,再加载Prototype. 针对情况1:先加载Prototype,再加载jQuery.方法一:jQuery 库 ...

  2. Electron与jQuery中$符号冲突的三种解决方法

    在Electron工程中引用jQuery时,经常会出现以下错误: Uncaught ReferenceError: $ is not defined 解决的具体方法如下: ①.在测试的过程中(测试过1 ...

  3. Hash冲突的几种解决方法

    1. 开放定值法: 也叫再散列法,当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突 ...

  4. 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结

    史上最全的CSS hack方式一览 2013年09月28日 15:57:08 阅读数:175473 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我 ...

  5. jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)

    在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. [WebMethod] public static string SayHe ...

  6. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法   JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQu ...

  7. libcmt.lib和msvcrt.lib冲突,原因和解决方法

    libcmt.lib和msvcrt.lib冲突,原因和解决方法 https://blog.csdn.net/longlijun/article/details/7331093 libcmt.lib是w ...

  8. JavaScript中解决jQuery和Prototype.js同时引入冲突问题

    两个库同时都定义了一个叫$的函数,所以在同时使用的时候会发生冲突.jQuery( http://jquery.com/ https://jquery.org/ )中提供了一种返还$的使用权给其他js库 ...

  9. jquery中Uncaught TypeError: $(...).ajaxUpload is not a function(…)错误解决方法

    错误原因:该函数不是jquery的核心函数,所以需要外部引入ajaxfileupload.js文件,可能是没有引入,或者引入的js文件互相冲突 解决方法:每次进入一个函数之前打印该函数所有的js文件, ...

随机推荐

  1. SpringBoot整合Kotlin构建Web服务

    今天我们尝试Spring Boot整合Kotlin,并决定建立一个非常简单的Spring Boot微服务,使用Kotlin作为编程语言进行编码构建. 创建一个简单的Spring Boot应用程序.我会 ...

  2. 注册系统所有的dll文件.bat

    @echo off echo 运行后,能重新注册系统所有的dll文件, echo 能解决内存读写错误的问题 pause echo on for %%1 in (%windir%/system32/*. ...

  3. 【BZOJ1011】遥远的行星(???)

    题面 BZOJ 洛谷 题解 大概就是分个块,然后每块取平均数算贡献啥的. BZOJ上过不去??? #include<iostream> #include<cstdio> usi ...

  4. View 的setTag() 和 getTag()

    View 的setTag() 和 getTag()ImageView.setTag(""); 就是当多个ImageView用到一个监听器时,能触发不同的情况,是View的方法 Ad ...

  5. bzoj 4332:JSOI2012 分零食

    描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同 ...

  6. 南昌邀请赛网络赛 D.Match Stick Game(dp)

    南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...

  7. a标签--超链接

    一.链接到其他网站 <body> <a href="https://www.baidu.com" target="_blank">百度& ...

  8. css--display属性中inline-block与inline的区别

    inline-block 与 inline 的区别: inline-block 与inline 效果类似,但是inline-block是可以设定宽度和高度的!!而行内元素(也就是inline)是无法设 ...

  9. etcd启用https服务

    目录 cfssl相关工具下载 生成etcd所需要的ssl证书 生成ca证书 生成etcd服务端证书 生成etcd客户端证书 修改etcd集群配置文件 重启etcd集群 验证集群健康情况 关于etcd的 ...

  10. 笔记 jquery 的一个bug解决方法积累

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处 当id或匹配条件中包含特殊字符时,浏览器控制台会报缺少")"的异常,解决办法目前有两个: ...