2012-05-21 39 views
2

我正在研究一個項目,該項目在頁面上加載了兩個版本的jQuery(版本1.5.1和1.7.2)。 1.5版本用於實現jsTree,1.7版本用於最新版本的jqGrid。一個網頁可以處理jQuery的兩個版本嗎?

我瞭解下載jQuery的兩個版本的性能影響以及名稱衝突的可能性,但任何人都會遇到類似情況,並且存在由於此原因而導致頁面遇到的固有問題。

目前,該網站運行良好,我沒有注意到任何可能由頁面上不同版本的jQuery引起的重大問題。但是我無法快速刪除一個版本或另一個版本,因爲它似乎會導致其中一個或另一個控件(樹或網格)崩潰。

我需要刪除一個版本的jQuery。我正在尋找關於在頁面上使用jQuery的兩個版本所期望的潛在問題的建議,以及如何去除一個引用的建議。而且,如果有人認爲這兩個版本都可以,那麼爲什麼我應該單獨留下足夠好的想法。

在此先感謝!

+0

據我所知,在同一範圍JS覆蓋最新的副本。 Intead,如果沒有機會我可以讓jsTree插件使用最新的jQuery版本,我會尋找一種通過重命名一個副本來處理衝突的方法。 – inhan

+3

在[jsTree演示頁面](http://www.jstree.com/demo)上,作者已經在使用jQuery v1.6.1。他的插件完全可以在最新版本的jQuery中完美運行。我的建議是將jsTree升級到最新版本,並僅使用jQuery 1.7.2。 –

回答

3

你絕對可以在一個網頁上運行jQuery的兩個版本。唯一的缺點是額外的http請求。

但是,在1.7中運行1.5代碼並不是很困難。擺脫1.5,並確保1.7是高於所有需要jQuery的插件,並查看什麼是中斷。在這裏或在jQuery論壇上發佈修復這些小問題的支持。

由於1.6的變化,您需要更改的幾個.attr()調用.prop()

編輯: 遵循Robert Harvey的建議並將jsTree升級到最新版本也是明智之舉。

+0

在[jsTree演示頁面](http://www.jstree.com/demo)上,作者已經在使用jQuery v1.6.1。 –

1

是的,它可以處理兩個版本的jquery .....在第二個版本中聲明一個變量爲$ .noConflict(true)。並使用聲明的變量來代替jQuery代碼中使用的$。 請檢查下面的代碼: 此代碼是jQuery的第二版本的聲明後使用:

<script type="text/javascript"> 

VAR jQuery_1_9_1 = $ .noConflict(真); 功能頁面加載(發件人,參數){

 var $ddl = jQuery_1_9_1("select[name$=drpClassCode]"); 
     var $ddl1 = jQuery_1_9_1("select[name$=drpSubContractors]"); 
     $ddl.select2(); 
     $ddl1.select2(); 

     $ddl.bind("change keyup", function() { 
      $ddl.fadeIn("slow"); 


     }); 

     $ddl.bind("change keyup", function() { 
      $ddl1.fadeIn("slow"); 


     }); 
    } 

相關問題