• 避免与其他库的冲突
    JQuery库和它所有的插件都是包含在jQuery命名空间下的,作为一般规则,全局对象被存储在jQuery的命名空间内,所以你不会得到jQuery和任何其他库之间的冲突(例如:prototype.js、MooTools、YUI)。
    需要注意的是,默认情况下可以使用$符号作为jQuery的缩写。如果你使用其他JavaScript库,而且使用了$符号,那么运行的时候会出现一些冲突。为了避免这些冲突,需要设置JQuery为无冲突模式。
  • 设置无冲突模式
    当你设置JQuery为无冲突模式,你必须分配一个新的变量来取代$符号。
<!-- 无冲突模式 -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
var $j = jQuery.noConflict();
// $j是jQuery方法的别名;创建新的别名是可选的。
$j(document).ready(function() {
$j( "div" ).hide();
});
// $的意义是document.getElementById()的快捷方式. mainDiv是一个DOM元素,而不是一个jQuery对象。
window.onload = function() {
var mainDiv = $( "main" );
}
</script>
    在上面的代码中,$将在原库中恢复它的意义。你仍然是能够在你的应用程序的其余部分使用jQuery作为全功能名称以及新的别名$ J。新别名可以被命名为任何你想要的名称。例如,JQ$ J、awesomeQuery等。
    最后,如果你不想定义另一个替代完整的jQuery函数名,那么你还是可以尝试另一种方法,只需添加$作为参数传递给jQuery( document ).ready()函数,这是使用最频繁的方法,不会引起与其他库的冲突。
<!-- 无冲突模式的另一种设置方式 -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();
jQuery( document ).ready(function( $ ) {
// 你可以在这里使用$作为JQuery的别名。
$( "div" ).hide();
});
// $在全局范围内是有prototype.js意义的.
window.onload = function(){
var mainDiv = $( "main" );
}
</script>

考虑到用更少的代码以实现完全的兼容,这可能是最理想的解决方案。

  • 引用JQuery在其他库之前
    上面的代码片段,在prototype.js加载后再加载jQuery。如果引用jQuery在其他库之前,你可以使用jQuery当你做一些工作的时候,但$符号将为其他库中定义的涵义。这里不需要通过调用jQuery.noConflict()放弃$符号。
<!-- 在其他库之前加载JQuery -->
<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
// 使用完整的JQuery名称来进行操作。
jQuery( document ).ready(function() {
jQuery( "div" ).hide();
});
// 使用$作为prototype.js的定义
window.onload = function() {
var mainDiv = $( "main" );
};
</script>
  • 引用JQuery函数的多种方式
    下面的方法,你可以引用JQuery函数在其他库创建了一个存在冲突的变量$的时候。
 
    • 创建一个新别名
    这jQuery.noConflict()函数返回一个JQuery函数引用,这样你就可以捕获任何一个你想要的变量。
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
var $jq = jQuery.noConflict();
</script>
    • 使用立即调用的函数表达式
    您可以继续使用标准的$符号来包装你的代码,并立即调用函数表达式,这也是一个jQuery插件创作的标准模式,在这里作者也不知道是否将会采取另一个库超出了$的标准模式。
<!-- 在立即调用的函数中使用$ -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();
(function( $ ) {
// 你可以在这里使用$。
})( jQuery );
</script>

请注意,如果你使用这个技巧,你将不能够立即调用函数来使用其内部的prototype.js的方法。

 
    • 使用参数传递给jQuery( document ).ready()函数
<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
jQuery(document).ready(function( $ ) {
// 你可以在这里使用$。
});
</script>

或者使用更简洁的语法:

<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
jQuery(function($){
// 你可以在这里使用$。
});
</script>

JQuery官方学习资料(译):避免与其他库的冲突的更多相关文章

  1. JQuery官方学习资料(译):使用JQuery的.index()方法

        .index()是一个JQuery对象方法,一般用于搜索JQuery对象上一个给定的元素.该方法有四种不同的函数签名,接下来将讲解这四种函数签名的具体用法. 无参数的.index() < ...

  2. JQuery官方学习资料(译):遍历JQuery对象和非JQuery对象

        JQuery提供了一个对象遍历的Utility方法$.each()和一个JQuery集合遍历方法.each(). $.each()     $.each()是一个通用的方法用来遍历对象和数组, ...

  3. JQuery官方学习资料(译):Utility方法

        JQuery提供了一些utility方法在$命名空间里,这些方法对完成常规的编程任务非常有帮助. $.trim()     删除前后部的空白内容. // 返回 "lots of ex ...

  4. JQuery官方学习资料(译):Data方法

        你可能经常会想需要通过元素来存储一些数据.在JavaScript中你可能需要给元素添加属性来实现这样的功能,但是在某些浏览器中,你可能还需要处理因此造成的内存泄露问题.JQuery提供了一个简 ...

  5. JQuery官方学习资料(译):CSS

        JQuery提供了一个处理方法,可以获取或设置元素的CSS属性. // 获取 CSS 属性 $( "h1" ).css( "fontSize" ); / ...

  6. JQuery官方学习资料(译):遍历

        一旦你通过JQuery创建了选择器,你就可以对此进行更为深入的遍历.遍历可以分为三个基本组成部分,父节点.子节点和兄弟节点.JQuery为这些部分提供了许多丰富易用的方法. <div c ...

  7. JQuery官方学习资料(译):JQuery对象

        每当创建一个新的元素(或者选择一个已经存在的元素)时,JQuery将返回一个元素的集合.大部分的开发人员新接触JQuery的时候,都把这个集合当做数组.这个集合中的DOM元素有从零开始的索引, ...

  8. JQuery官方学习资料(译):操作元素

      获取和设置元素的信息     有很多种方式可以改变现有的元素,最常见的是改变HTML内容或者元素的属性.JQuery提供了简单的夸浏览器的方法来帮助你实现元素信息的获取和设置. .html():获 ...

  9. JQuery官方学习资料(译):选择器的运作

    Getters 和 Setters     JQuery的方法重载,方法设置和获取值一般使用相同名称的方法,当一个方法用来设置一个值的时候称之为Setter,当一个方法用来获取一个值的时候称之为Get ...

随机推荐

  1. vb越界

    想起来一个项目当中,遇到了一个问题,就是老是显示数据溢出. 后来查查查,发现是由于vb的特性造成的.例如cbyte()函数.此函数()里面的数据运算也不能超过cbyte的范围,不然就回发生溢出问题.

  2. 监听HTTP请求

    using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Oracle.DataAccess.Client; using System; usi ...

  3. Windows 10 IoT Serials 10 – 如何使用OCR引擎进行文字识别

    1. 引言 OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方 ...

  4. Javascript高级编程学习笔记(75)—— 表单(3)表单字段

    表单字段 表单作为web应用中不可或缺的一部分,当然也是可以使用原生的 DOM 元素来访问的 除了标准的访问方式之外,每个表单都拥有一个 elements 属性,该属性保存着该表单所有 表单元素 的集 ...

  5. ubuntu18.04虚拟机安装docker

    第一步: sudo apt-get update 然后直接   sudo apt install docker.io 安装完成之后 可以 docker version   查看版本  或者 docke ...

  6. SharedPreferences解析

    一.概述 SharedPreferences(简称SP)是Android中很常用的数据存储方式,SP采用key-value(键值对)形式,主要用于轻量级的数据存储,尤其适合保存应用的配置参数,但不建议 ...

  7. 《http权威指南》读书笔记4

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  8. mysql原生sql盘点

    select*from (select*from test1 union all select*from test2 ) //两个查询的数据行数需要对应一致,且名字as 一致. 1.如果直接用如下sq ...

  9. 部署 HTTPS 访问 ( https:// )

    简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,要比http协议安全. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是4 ...

  10. 数据库占用cpu较高的查询

    近来看到别人的有关数据库查询cpu占用较高的sql语句(本人sql并不好),所以查询了一下资料,记录一下,便于理解和应用. 首先,将语句贴在这里 SELECT TOP 10 --平均cpu时间 tot ...