jQuery-入口函数,$冲突问题

请看这里
请看这里2

另外的砖头:
Query是有良好的封装,全局只有一个jQuery对象,不污染636f7079e799bee5baa6e997aee7ad9431333335346134顶级域名。
jQuery默认使用" " 操 作 符 , p r o t o t y p e 等 其 他 框 架 也 是 是 使 用 " "操作符,prototype等其他框架也是是使用" "prototype使"",于是,如果jQuery在其他库之后引入,那么jQuery将获得" " 使 用 权 。 这 样 的 情 况 也 很 容 易 理 解 , 毕 竟 J S 是 从 上 到 下 流 式 执 行 的 。 同 样 的 道 理 , 如 果 在 其 他 使 用 " "使用权。这样的情况也很容易理解,毕竟JS是从上到下流式执行的。 同样的道理,如果在其他使用" "使JS使"“的库之前引入jQuery,那么jQuery将不会占用” " 。 在 第 一 种 情 况 时 , 如 果 想 使 j Q u e r y 让 出 " "。 在第一种情况时,如果想使jQuery让出" "使jQuery"",只需要使用下面的语句:
Js代码
jQuery.noConfilct();
该函数会返回jQuery对象本身,于是可以用来取别名,例如
Js代码
var j = jQuery.noConfilt();
其实,如果单纯地想取别名,使用var j = jQuery;就可以,但是上面的用法是更好的,后面会说到原因。
jQuery.noConfict()做了什么?怎么能够让出使用权?其实很简单,提前把$的原本对象保存起来,调用该方法的时候再恢复就可以。
下面是源码,相信一定能够看明白了:
Js代码
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.KaTeX parse error: Expected '}', got 'EOF' at end of input: … { if ( window. === jQuery ) {
window.$ = _$;
}
if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
}
可以看出,这里的noConflict如果指定deep为true,是可以把jQuery的全局对象也让出来,这种用法可以用于多个jQuery版本的替换。
其实,这种noConflict用法是很常见的,在backbone中也这样的函数,见代码
Js代码
// Save the previous value of the Backbone variable, so that it can be
// restored later on, if noConflict is used.
var previousBackbone = root.Backbone
// Runs Backbone.js in noConflict mode, returning the Backbone variable
// to its previous owner. Returns a reference to this Backbone object.
Backbone.noConflict = function() {
root.Backbone = previousBackbone;
return this;
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值