多庫共存換句話說可以叫無沖突處理。
總的來說會有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 可將課程添加到書簽
舉報