jQuery,解决命名冲突的问题
使用noConflict(true),把$和jQuery名字都给别人
<body><script>var $ = 'zan'var jQuery = 'lan'</script><script src="./jquery.js"></script><script>console.log(jQuery, '11111'); // 打印jquery函数console.log($, '22222'); // 打印jquery函数console.log(jQuery.noConflict(true), '33333');// 打印jquery函数console.log($, '44444');// zan 44444console.log(jQuery, '55555');// lan 55555</script>
</body>
使用noConflict,只把$名字都给别人
<body><script>var $ = 'zan'var jQuery = 'lan'</script><script src="./jquery.js"></script><script>console.log(jQuery, '11111'); // 打印jquery函数console.log($, '22222'); // 打印jquery函数console.log(jQuery.noConflict(), '33333');// 打印jquery函数console.log($, '44444');// zan 44444console.log(jQuery, '55555');// 打印jquery函数</script>
</body>
noConflict原理
下面是部分jquery源码
(function (global, factory) {"use strict";if (typeof module === "object" && typeof module.exports === "object") {module.exports = global.document? factory(global, true): function (w) {if (!w.document) {throw new Error("jQuery requires a window with a document");}return factory(w);};} else {factory(global);}
})(typeof window !== "undefined" ? window : this, function (window, noGlobal) {var jQuery = function () {};var _jQuery = window.jQuery; // 记录别人声明的jQuery变量值var _$ = window.$;// 记录别人声明的$变量值jQuery.noConflict = function (deep) {if (window.$ === jQuery) {window.$ = _$; // 还原别人声明的$值}if (deep && window.jQuery === jQuery) {window.jQuery = _jQuery;// 还原别人声明的jQuery值}return jQuery;};return jQuery;
});