Jquery
jQuery.noConflict
工具函数无冲突处理
源码解读
<script>
var $ = "prototype's $";
</script>
<script src="jquery.js" />
<script>
$.noConflict();
console.log($); // prototype's $
</script>
var _$ = window.$,
_jQuery = window.jQuery;
jQuery.extend({
noConflict(extreme) {
window.$ = _$;
if (extreme) {
window.jQuery = _jQuery;
}
return jQuery;
},
});
代码引入时,先通过下划线开头命名的变量,将 window.$
(可能是其它库)以及 window.jQuery 储蓄起来了。这之后,若是调用 noConflict 函数,将会直接还原 window.$
为原始值。
noConflict 最后还将 jQuery 返回了,也就是说,jQuery 的无冲突处理还可以这样玩儿:
// method one
$.noConflict(true);
jQuery(".box");
// method two
const jq = $.noConflict();
jq(".box")(
// method three
function ($) {
// inside IFEE $ === jQuery
$(".box");
}
)($.noConflict());