jQuery - Use jQuery.noConflict to avoid conflict between plugins

假設有一MVC framework,header檔內已有載入1.10.1的jQuery Library,而有一個file,一般來

說都會載入header file,但好巧不巧今天要多加一plugin,此plugin無法與這麼新版本jQuery 

Library相容(header file內),但plugin官網上提供的教學,1.7.1版Library可正常運作,因此你就

在這個檔案內再載入1.7.1版,但不幸地本來這個view內其他jQuery UI使用1.10.1很正常,

但您在該檔案載入1.7.1後,使得$變數被1.7.1版的給取代,剛好使得原本的UI就無法work了。

因此在此檔案下您就得區分出,哪一個是1.10.1及1.7.1的jQuery變數,如此才能讓兩個plugin

都相安無事的work。


header view file

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
…

other view file

<script type="text/javascript">
jq171 = jQuery.noConflict(true);  //此時的jQuery代表的是1.7.1
//透過執行noConflict,使得jq171表示為1.7.1的jQuery變數
//,而jQuery代表的就會是1.10.1
$(document).ready(function(){
      $("#tabs").tab({...});  //此ui若使用1.7.1版會無法work, 此時$為1.10.1
      jq171('.jbar').jbar();  //jbar plugin在1.10.1無法work, 但1.7.1 OK
      .....
});
</script>

基本的使用大致是這樣。

留言