2011-02-07 48 views
1

我有一個頁面被包含在PHP的任何地方,並且該頁面使用jQuery 1.4.4。 (我會使用官方jQuery librarys源代碼中的'最新',但是...) 我無法控制的是用戶網站jQuery庫的版本。 或即使用戶擁有jQuery。如何:在同一頁面上的兩個不同的jQuery - 要包含的頁面具有最新的jQuery

我做了一些測試,並將我的頁面包含到擁有OLDER jQuery的網站中 - 並且出現衝突。

這是要包含的腳本示例。我不能做這項工作:

.... PHP代碼....

.... HTML頭.....

<script type="text/javascript"> var jQ144 = jQuery.noConflict(true);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<script type="text/javascript"> 
jQ144(document).ready(function($){ 

    $(".helpPlease").hover(function(){  
     $(this).animate({height:'250px'}, { queue:false, duration:400 }); 
     },function(){  
     $(".helpPlease").animate({height:'17px'}, { queue:false, duration:400 }); 
    }); 

...(上代碼只是例子)...更多代碼........

}); 
</script> 

它只是不會工作。

有什麼方法可以檢查頁面是否已經有jQuery?如果更老 - 激活新的代碼 - 我的頁面的Jquery庫? 或...如何讓新的'覆蓋'舊的?

或者我做錯了什麼?我嘗試了很多在網絡上描述的建議,但沒有結果。

在此先感謝! :)

回答

3

當您包含jQuery時,它需要$變量創建jQuery類。 $恰好是對jQuery的引用。所以當你包含一個較舊/不同版本的jQuery時,它實際上是「覆蓋」(替換)jQuery類。

測試,這個工作:(去除noConflict調用true參數)

<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
     <script type="text/javascript"> 
      jQuery.noConflict() 
      jQuery144 = jQuery 
      console.log(jQuery144, jQuery) 
     </script> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> 
     <script type="text/javascript"> 
      jQuery144(function($) { 
       console.log("hello", $.fn.jquery) 
      }) 
      jQuery(function($) { 
       console.log("world", $.fn.jquery) 
      }) 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

編輯2:有,你就必須考慮的一個重要問題。在內部,jQuery自稱爲window.jQuery。當你再次包含jQuery時,你重新定義了window.jQuery,但是在第一個版本中進行的調用在運行時被綁定,而不是在定義時間,所以最老的jQuery版本的一些內部調用可能實際上是在最新的一。意識到。

+0

好的感謝您的快速響應。它失敗。 – 2011-02-07 22:45:22

相關問題