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

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

other view file

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

基本的使用大致是這樣。

留言