jquery版本共存_多个jQuery版本共存的处理方案
如何在一个页面上让多个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版本共存的处理方案相关推荐
- cdn jquery怎么没有提示_第一个jQuery程序
1.配置jQuery环境 1.1获取jQuery最新版本 进入jQuery的官方网址 http://jquery.com ,下载最新的jQuery库. 1.2 jQuery库类型说明 目前jQuery ...
- jquery开发插件_如何开发jQuery插件
jquery开发插件 We have gone through different jQuery event methods, jQuery effects and animations in the ...
- python不同版本共存_多个python版本共存时的pip配置
两种方法来配置pip Func1: 1.1 找到python环境的安装包,将python.exe文件重命名,如:将python2.7版本的python.exe重命名为Python2.exe,将pyth ...
- python版本切换_怎么切换python版本
展开全部 (1)分别安2113装 python-2.7.12.amd64.msi python-3.5.2-amd64.exe (python官网下载的) 顺序无所谓(为5261了看着4102方便,我 ...
- jquery 图像滑块_如何使用jQuery构建图像滑块
jquery 图像滑块 This tutorial will walk you through building an image slider using the jQuery library. 本 ...
- 使用jquery制作计算器_如何使用jQuery对计算器进行编程
使用jquery制作计算器 Previously, I showed you how to use CSS border-radius property to create the following ...
- java mysql 版本查询_如何查看数据库版本
如何查看Oracle数据库版本? Metalink上有一段话,COPY过来复用吧. To determine the release information for these databases: ...
- 看mysql版本信息_查看mysql 的版本信息
jquery插件的用法之cookie 插件 一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接 ...
- sql server版本 性能_迁移到高版本 SQL 数据库后,性能变差了
//迁移高版本 SQL// 高版本 SQL,一定要迁移吗? 是的,必须的.数据库软件毕竟不是互联网的单体应用,UI 一天一变,讨用户的巧.这类商用软件讲究的是稳定,可靠和安全.所以一个大版本的上线, ...
- mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL
本文概括了网络上众多常用MySQL命令,讲述过程详细明了. 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口, ...
最新文章
- fortran和Java学_Fortran模块和全局变量
- 添用户报错:useradd:警告:此主目录已经存在
- sql server 数据库还原
- 新骗子举报收录系统源码
- 【引用】窗口处理技巧大全 vb(窗体控件)
- Springboot整合SpringSecurity--对静态文件进行权限管理
- mysql字段动态扩展_如何用动态字段实现系统的扩展性?
- irobot擦地机器人故障_不想跪下擦地板!iRobot新神器擦地机器人能否帮到你?
- 基于SLAM的机器人的自主定位导航
- 读博不怎么花家里的钱,为什么还说穷人不要读博
- word添加目录和更新
- Window环境下 Jenkins Master/Slaver模式 + Svn 部署
- OFD文件怎么转PDF?ofd文件转换为pdf格式教程
- 第十章 搭建nRF52开发环境(SES)
- 为什么年轻人别去外包公司
- c++实现sqrt函数功能
- Git for windows 和 cygwin
- 简单操作实现Siri控制ESP8266引脚电平--1
- 開運算、閉運算(morphologyEx、MORPH_OPEN、MORPH_CLOSE)
- 今天除夕夜了 祝大家新年快乐 恭喜发财