多个jQuery版本共存的处理方案
来源:互联网 发布:如何登陆我的淘宝店铺 编辑:程序博客网 时间:2024/04/30 09:47
本文给大家分享的是一个经常需要碰到的问题的解决方案,如何才能让一个页面中同时存在多个jQuery呢,这就是今天我们需要探讨的话题了。
如何在一个页面上让多个jQuery共存呢?比如jquery-1.5和jquery-1.11。
你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗?
答案是,不行。因为现实生活是非常残酷的。举个栗子:
现有网站已经引用了jQuery 1.5以及相关插件。如果直接将jQuery升级到最新版,这些插件就不工作了,除非你能把这些插件全部升级,或者等各个插件的作者发布支持最新版jQuery的版本。
现在,如果我们要基于jQuery开发新的插件或者写JavaScript代码,用新版本会比较省时省力。
但旧版本又绝对不能扔掉,怎么办?
方法是通过jQuery的noConflict()来让多版本共存。
当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:
同时,jQuery内部保留旧的window.$和window.jQuery对象的引用。当我们调用:
window.$被恢复,但window.jQuery仍是jQuery。
当我们调用:
window.$和window.jQuery都被恢复了,一切看起来就像jQuery从未被导入过一样,只不过可以通过变量$jq来使用jQuery。
所以,让新旧版本共存的jQuery可以这样实现:
在myscript.js中,用$jq就可以访问1.11版本的jQuery了。
至此,问题解决。
但是,引入两个版本的jQuery后,页面被搞得乱七八糟。如果有人看不懂代码,把var $jq = jQuery.noConflict(true);删掉了怎么办?或者,把导入jQuery的两行互换了位置,最后就得不到正确的jQuery版本。
最好的办法是不改动页面,直接引用我们编写的新的js文件:
这样一来,我们就在myscript.js内部引用最新版jQuery,而页面无论有没有jQuery,有哪个版本的jQuery,我们都不关心。
开始编写新的更好的解决方案。首先,把myscript.js的主体确定下来:
用匿名函数是个好习惯,不污染全局变量,同时杜绝外部代码访问。
下一步是直接把jQuery 1.11的代码嵌进去:
嵌入的当然是压缩后的代码,一共3行,然后加一句:
注意到$是一个局部变量,在后面的代码中,可以随时引用这个$,跟页面上其他版本的jQuery全局变量$不是一个对象。
最后一步工作就是检查jQuery的协议是否允许我们把jQuery源码直接嵌入我们自己的JavaScript代码。
以上所述就是本文的全部内容了,希望大家能够喜欢。
- 多个jQuery版本共存的处理方案
- phpstudy多版本php共存,phpstudy无法多版本共存的方案,多个PHP同时运行
- python多个版本的共存问题
- jquery的版本共存问题
- jQuery多库共存处理
- 一台机器多个版本的JDK共存
- SQL SERVER多个版本共存的问题
- ECLIPSE支持多个JDK版本共存的设置
- ECLIPSE支持多个JDK版本共存的设置
- pycharm下的多个python版本共存(一)
- pycharm下的多个python版本共存(二)
- VisualStudio2015配置共存的多个版本Python环境
- pycharm下的多个python版本共存
- window.onload多个共存 - 借鉴jQuery.noConflict的思路
- jQuery不同版本共存
- eclipse支持多个jdk版本共存
- ubuntu 多个版本gcc共存方法
- eclipse支持多个jdk版本共存
- ios7.1以后,iphone上隐藏应用图标的方法
- opencv-基本绘图函数
- Maven中实现多环境的配置profile和filter
- session的生命周期问题讨论!!
- STL—— stack栈
- 多个jQuery版本共存的处理方案
- 三元运算符
- Android自定义View及canvas(表盘实例)
- java项目生成安装文件(工具为exe4j、Inno setup,有工具连接)
- Java 输入一个数字将其转换为汉字,如:102,一百零二
- 酷壳陈皓:如何学好C语言
- Android Studio中如何将GIT提交项目到远程仓库
- STL—— queue 单向队列
- MyBatis学习总结(一)