亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

jQuery多庫共存處理

多庫共存換句話說可以叫無沖突處理。

總的來說會有2種情況會遇到:

   1、$太火熱,jQuery采用$作為命名空間,不免會與別的庫框架或者插件相沖突。

   2、jQuery版本更新太快,插件跟不上,導致不同版本對插件的支持度不一樣。

出于以上的原因,jQuery給出了解決方案–– noConflict函數。

    引入jQuery運行這個noConflict函數將變量$的控制權讓給第一個實現它的那個庫,確保jQuery不會與其他庫的$對象發生沖突。
在運行這個函數后,就只能使用jQuery變量訪問jQuery對象。例如,在要用到$("aaron")的地方,就必須換成jQuery("aaron"),因為$的控制權已經讓出去了。

使用DEMO:

jQuery.noConflict();
// 使用 jQuery
jQuery("aaron").show();
// 使用其他庫的 $()
$("aaron").style.display = ‘block’;

   這個函數必須在你導入jQuery文件之后,并且在導入另一個導致沖突的庫之前使用。當然也應當在其他沖突的庫被使用之前,除非jQuery是最后一個導入的。

由于比較簡單,我們直接上代碼解說:

Var _jQuery = window.jQuery,
    _$ = window.$;

jQuery.noConflict = function( deep ) {
    if ( window.$ === jQuery ) {
        window.$ = _$;
    }
if ( deep && window.jQuery === jQuery ) {
        window.jQuery = _jQuery;
    }
    return jQuery;
};

    如果我們需要同時使用jQuery和其他JavaScript庫,我們可以使用 $.noConflict()把$的控制權交給其他庫。舊引用的$ 被保存在jQuery的初始化; noConflict() 簡單的恢復它們。
    通過類似swap交換的概念,先把之前的存在的命名空間給緩存起來,通過對比當前的命名空間達到交換的目的,首先,我們先判斷下當前的的$空間是不是被jQuery接管了,如果是則讓出控制權給之前的_$引用的庫,如果傳入deep為true的話等于是把jQuery的控制權也讓出去了。
    如果不通過noConflict處理的話其后果可想而知,香噴噴的$大家都“覬覦已久”。

任務

 

 

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?