如何在一个页面上让多个jQuery共存呢?比如jquery-1.5和jquery-1.11。

你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗?

答案是,不行。因为现实生活是非常残酷的。举个栗子:

现有网站已经引用了jQuery 1.5以及相关插件。如果直接将jQuery升级到最新版,这些插件就不工作了,除非你能把这些插件全部升级,或者等各个插件的作者发布支持最新版jQuery的版本。

现在,如果我们要基于jQuery开发新的插件或者写JavaScript代码,用新版本会比较省时省力。

但旧版本又绝对不能扔掉,怎么办?

方法是通过jQuery的noConflict()来让多版本共存。

当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:

代码如下:

window.$ = window.jQuery = { jQuery object };

同时,jQuery内部保留旧的window.$和window.jQuery对象的引用。当我们调用:

代码如下:

var $jq = $.noConflict();

window.$被恢复,但window.jQuery仍是jQuery。

当我们调用:

代码如下:

var $jq = $.noConflict(true);

window.$和window.jQuery都被恢复了,一切看起来就像jQuery从未被导入过一样,只不过可以通过变量$jq来使用jQuery。

所以,让新旧版本共存的jQuery可以这样实现:

代码如下:

// 现在window.$和window.jQuery是1.11版本:

console.log($().jquery); // => '1.11.0'

var $jq = jQuery.noConflict(true);

// 现在window.$和window.jQuery被恢复成1.5版本:

console.log($().jquery); // => '1.5.0'

// 可以通过$jq访问1.11版本的jQuery了

在myscript.js中,用$jq就可以访问1.11版本的jQuery了。

至此,问题解决。

但是,引入两个版本的jQuery后,页面被搞得乱七八糟。如果有人看不懂代码,把var $jq = jQuery.noConflict(true);删掉了怎么办?或者,把导入jQuery的两行互换了位置,最后就得不到正确的jQuery版本。

最好的办法是不改动页面,直接引用我们编写的新的js文件:

代码如下:

这样一来,我们就在myscript.js内部引用最新版jQuery,而页面无论有没有jQuery,有哪个版本的jQuery,我们都不关心。

开始编写新的更好的解决方案。首先,把myscript.js的主体确定下来:

代码如下:

// myscript.js

(function () {

// BEGIN

// TODO: javascript code here...

// END

})();

用匿名函数是个好习惯,不污染全局变量,同时杜绝外部代码访问。

下一步是直接把jQuery 1.11的代码嵌进去:

代码如下:

// myscript.js

(function () {

// BEGIN

/*! jQuery v1.11.1 */

!function(a,b){"object"==typeof module&&"object"==typeof module.exports?...

if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=...

},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(thi...

var $ = jQuery.noConflict(true);

// TODO: javascript code here...

// END

})();

嵌入的当然是压缩后的代码,一共3行,然后加一句:

代码如下:

var $ = jQuery.noConflict(true);

注意到$是一个局部变量,在后面的代码中,可以随时引用这个$,跟页面上其他版本的jQuery全局变量$不是一个对象。

最后一步工作就是检查jQuery的协议是否允许我们把jQuery源码直接嵌入我们自己的JavaScript代码。

以上所述就是本文的全部内容了,希望大家能够喜欢。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

jquery版本共存_多个jQuery版本共存的处理方案相关推荐

  1. cdn jquery怎么没有提示_第一个jQuery程序

    1.配置jQuery环境 1.1获取jQuery最新版本 进入jQuery的官方网址 http://jquery.com ,下载最新的jQuery库. 1.2 jQuery库类型说明 目前jQuery ...

  2. jquery开发插件_如何开发jQuery插件

    jquery开发插件 We have gone through different jQuery event methods, jQuery effects and animations in the ...

  3. python不同版本共存_多个python版本共存时的pip配置

    两种方法来配置pip Func1: 1.1 找到python环境的安装包,将python.exe文件重命名,如:将python2.7版本的python.exe重命名为Python2.exe,将pyth ...

  4. python版本切换_怎么切换python版本

    展开全部 (1)分别安2113装 python-2.7.12.amd64.msi python-3.5.2-amd64.exe (python官网下载的) 顺序无所谓(为5261了看着4102方便,我 ...

  5. jquery 图像滑块_如何使用jQuery构建图像滑块

    jquery 图像滑块 This tutorial will walk you through building an image slider using the jQuery library. 本 ...

  6. 使用jquery制作计算器_如何使用jQuery对计算器进行编程

    使用jquery制作计算器 Previously, I showed you how to use CSS border-radius property to create the following ...

  7. java mysql 版本查询_如何查看数据库版本

    如何查看Oracle数据库版本? Metalink上有一段话,COPY过来复用吧. To determine the release information for these databases: ...

  8. 看mysql版本信息_查看mysql 的版本信息

    jquery插件的用法之cookie 插件 一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接 ...

  9. sql server版本 性能_迁移到高版本 SQL 数据库后,性能变差了

    ​//迁移高版本 SQL// 高版本 SQL,一定要迁移吗? 是的,必须的.数据库软件毕竟不是互联网的单体应用,UI 一天一变,讨用户的巧.这类商用软件讲究的是稳定,可靠和安全.所以一个大版本的上线, ...

  10. mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL

    本文概括了网络上众多常用MySQL命令,讲述过程详细明了. 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口, ...

最新文章

  1. fortran和Java学_Fortran模块和全局变量
  2. 添用户报错:useradd:警告:此主目录已经存在
  3. sql server 数据库还原
  4. 新骗子举报收录系统源码
  5. 【引用】窗口处理技巧大全 vb(窗体控件)
  6. Springboot整合SpringSecurity--对静态文件进行权限管理
  7. mysql字段动态扩展_如何用动态字段实现系统的扩展性?
  8. irobot擦地机器人故障_不想跪下擦地板!iRobot新神器擦地机器人能否帮到你?
  9. 基于SLAM的机器人的自主定位导航
  10. 读博不怎么花家里的钱,为什么还说穷人不要读博
  11. word添加目录和更新
  12. Window环境下 Jenkins Master/Slaver模式 + Svn 部署
  13. OFD文件怎么转PDF?ofd文件转换为pdf格式教程
  14. 第十章 搭建nRF52开发环境(SES)
  15. 为什么年轻人别去外包公司
  16. c++实现sqrt函数功能
  17. Git for windows 和 cygwin
  18. 简单操作实现Siri控制ESP8266引脚电平--1
  19. 開運算、閉運算(morphologyEx、MORPH_OPEN、MORPH_CLOSE)
  20. 今天除夕夜了 祝大家新年快乐 恭喜发财

热门文章

  1. Android之布局详解
  2. MATLAB:快速傅里叶变换(FFT)
  3. 1.1信息安全基础概念
  4. 联想服务器万全T260G3系统,联想万全T260G3服务器电子教室更易管理
  5. 中科院计算机研究方向-考研导师选择的一些建议
  6. MongoDB同步原理解析
  7. 经济应用文写作【5】
  8. 领域驱动实践总结(基本理论总结与分析+架构分析与代码设计V+具体应用设计分析)
  9. VB.NET利用WMI获取操作系统所在硬盘序列号
  10. 遗传算法 matlab 详解,遗传算法的Matlab实现讲解