通过jQuery的noConflict()来让多版本共存。
当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:
window.$ = window.jQuery = { jQuery object };
同时,jQuery内部保留旧的window.$和window.jQuery对象的引用。
1、当我们调用:var $jq = $.noConflict();
window.$被恢复,但window.jQuery仍是jQuery。
2、当我们调用:var $jq = $.noConflict(true);
window.$和window.jQuery都被恢复了,一切看起来就像jQuery从未被导入过一样,只不过可以通过变量$jq来使用jQuery。
3、不同版本共存的jQuery可以这样实现,列个简单的例子:
<script src="jquery-1.5.js"></script>
<script src="jquery-1.11.js"></script>
<script>
console.log($().jquery); // => '1.11.0';// 现在window.$和window.jQuery是1.11版本:
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了。
4、一般开发中,在需要引入特殊版本的js文件中引入jq文件,在代码段后面添加var $jq = jQuery.noConflict(true); 恢复为正常版本的jq,例如:
// myscript.js
(function () {
// BEGIN
/*! jQuery v1.11.1-start */
!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...
/*! jQuery v1.11.1-end*/
var $ = jQuery.noConflict(true);
// TODO: javascript code here...
// END
})();
本文介绍了如何通过jQuery的noConflict()方法实现不同版本的jQuery在同一页面上共存。通过设置true参数,可以完全释放$和jQuery全局变量,然后通过变量引用特定版本的jQuery。在实际开发中,可以在特殊版本的JS文件中引入jQuery并使用noConflict(true),以恢复全局变量,并在自定义作用域内使用所需版本。
5897

被折叠的 条评论
为什么被折叠?



