如何在一个页面上让多个jQuery版本共存
2014-10-09 14:21
309 查看
廖雪峰 /
编程 / 7月30日 8:33 / 阅读: 54
如何在一个页面上让多个jQuery共存呢?比如jquery-1.5和jquery-1.11。
你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗?
答案是,不行。因为现实生活是非常残酷的。举个栗子:
现有网站已经引用了jQuery 1.5以及相关插件。如果直接将jQuery升级到最新版,这些插件就不工作了,除非你能把这些插件全部升级,或者等各个插件的作者发布支持最新版jQuery的版本。
现在,如果我们要基于jQuery开发新的插件或者写JavaScript代码,用新版本会比较省时省力。
但旧版本又绝对不能扔掉,怎么办?
方法是通过jQuery的
当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:
同时,jQuery内部保留旧的
当我们调用:
所以,让新旧版本共存的jQuery可以这样实现:
在
至此,问题解决。
但是,引入两个版本的jQuery后,页面被搞得乱七八糟。如果有人看不懂代码,把
最好的办法是不改动页面,直接引用我们编写的新的js文件:
这样一来,我们就在
开始编写新的更好的解决方案。首先,把
用匿名函数是个好习惯,不污染全局变量,同时杜绝外部代码访问。
下一步是直接把jQuery 1.11的代码嵌进去:
嵌入的当然是压缩后的代码,一共3行,然后加一句:
注意到
最后一步工作就是检查jQuery的协议是否允许我们把jQuery源码直接嵌入我们自己的JavaScript代码。
来源自:
http://www.liaoxuefeng.com/article/001406607849586495879a5597d43138b9335f3496b80e9000
编程 / 7月30日 8:33 / 阅读: 54
如何在一个页面上让多个jQuery共存呢?比如jquery-1.5和jquery-1.11。
你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗?
答案是,不行。因为现实生活是非常残酷的。举个栗子:
现有网站已经引用了jQuery 1.5以及相关插件。如果直接将jQuery升级到最新版,这些插件就不工作了,除非你能把这些插件全部升级,或者等各个插件的作者发布支持最新版jQuery的版本。
现在,如果我们要基于jQuery开发新的插件或者写JavaScript代码,用新版本会比较省时省力。
但旧版本又绝对不能扔掉,怎么办?
方法是通过jQuery的
noConflict()来让多版本共存。
当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:
[code]window.$ = window.jQuery = { jQuery object };
同时,jQuery内部保留旧的
window.$和
window.jQuery对象的引用。当我们调用:
[code]var $jq = $.noConflict();
window.$被恢复,但
window.jQuery仍是jQuery。
当我们调用:
[code]var $jq = $.noConflict(true);
window.$和
window.jQuery都被恢复了,一切看起来就像jQuery从未被导入过一样,只不过可以通过变量
$jq来使用jQuery。
所以,让新旧版本共存的jQuery可以这样实现:
[code]<script src="jquery-1.5.js"></script> <script src="jquery-1.11.js"></script> <script> // 现在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了 </script> <script src="myscript.js"></script>
在
myscript.js中,用
$jq就可以访问1.11版本的jQuery了。
至此,问题解决。
但是,引入两个版本的jQuery后,页面被搞得乱七八糟。如果有人看不懂代码,把
var $jq = jQuery.noConflict(true);删掉了怎么办?或者,把导入jQuery的两行互换了位置,最后就得不到正确的jQuery版本。
最好的办法是不改动页面,直接引用我们编写的新的js文件:
[code]<script src="jquery-1.5.js"></script> <script src="myscript.js"></script>
这样一来,我们就在
myscript.js内部引用最新版jQuery,而页面无论有没有jQuery,有哪个版本的jQuery,我们都不关心。
开始编写新的更好的解决方案。首先,把
myscript.js的主体确定下来:
[code]// myscript.js (function () { // BEGIN // TODO: javascript code here... // END })();
用匿名函数是个好习惯,不污染全局变量,同时杜绝外部代码访问。
下一步是直接把jQuery 1.11的代码嵌进去:
[code]// 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行,然后加一句:
[code]var $ = jQuery.noConflict(true);
注意到
$是一个局部变量,在后面的代码中,可以随时引用这个
$,跟页面上其他版本的jQuery全局变量
$不是一个对象。
最后一步工作就是检查jQuery的协议是否允许我们把jQuery源码直接嵌入我们自己的JavaScript代码。
来源自:
http://www.liaoxuefeng.com/article/001406607849586495879a5597d43138b9335f3496b80e9000
相关文章推荐
- 如何在一个页面上让多个jQuery版本共存
- 如何在一个页面上让多个jQuery版本共存
- 如何在一个页面上让多个jQuery版本共存
- 如何在一个页面上让多个jQuery版本共存
- 如何在一个页面上让多个jQuery版本共存
- 在同一个页面使用多个不同的jQuery版本,让它们并存而不冲突
- 在同一个页面使用多个不同的jQuery版本而不冲突的方法
- 在同一个页面使用多个不同的jQuery版本,让它们并存而不冲突
- 如何在一个页面上让多个jQuery
- 在同一个页面使用多个不同的jQuery版本,让它们并存而不冲突
- jquery如何在页面加载完成后模拟出一个鼠标点击事件?
- 在同一个页面中加载多个不同的jQuery版本
- 在同一个页面使用多个不同的jQuery版本,让它们并存而不冲突
- 页面多个Jquery版本共存的冲突问题,解决方法!
- 一个页面上让多个jQuery共存
- 一个list中包含不同的type时如何遍历?页面如何接收?Jquery调用后台方法?
- 在同一个页面使用多个不同的jQuery版本,让它们并存而不冲突
- jquery更新后如何在一个网站中使用两个版本的jQuery
- 在同一个页面使用多个不同的jQuery版本,让它们并存而不冲突
- 如何在一个页面上让多个jQuery