2011-03-01 61 views
1

參考類似的問題: How do I run different versions of jQuery on the same page?jQuery:如何在第三方腳本加載不同版本的jQuery之前保存我的jQuery版本?

我有一個情況我有我自己的jQuery(1.4.2)的版本,定義各種自定義功能。這個版本的jQuery在加載自己版本的jQuery(1.4.3)的第三方腳本之前加載,並且在加載該腳本時它會以某種方式破壞我所有的自定義函數。第三方腳本在加載jQuery後使用noconflict。由於noconflict代碼,我認爲如果我可以在其他任何地方加載第三方腳本,問題就會得到解決,但是我的環境是這樣的,我不能保證這一點,但是我可以在加載之前和/或之後運行一些自定義JavaScript腳本如果我動態加載它。

什麼我不知道是如果有一些方法可以讓我保存/恢復/保護我自己的jQuery的版本,以便在自定義方法將是第三方腳本運行後訪問?

回答

2

如果你之前可以運行自定義代碼,該腳本被加載後,我相信,這將做到這一點:

var $myJQ = jQuery.noConflict(); 

// Load the other script. It should move itself away from the $ and jQuery variables 
// if it properly calls noConflict. 

var $ = $myJQ; 

我相信讓你知道你在做什麼。

+0

這是我在想什麼,但不需要更像這樣的東西:'jQuery = window.jQuery = $ myJQ; $ = window。$ = jQuery;'它更普遍適用? – Muhd 2011-03-02 02:48:16

+0

@Muhd - 是的,您也可以設置window.jQuery和window。$變量(如果它們對您的腳本是必需的)。我不知道我會認爲它是必需的,但它將更多地取決於使用它的插件/腳本的結構。沒有要求爲jQuery定義window.jQuery的功能 - 否則'var $ myJQ = jQuery.noConflict()'什麼也得不到。 – 2011-03-02 16:03:13

0

http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/

<!-- load jQuery 1.1.3 --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.1.3.js"></script> 
<script type="text/javascript" src="jquery.dimensions.min.js"></script> 

<!-- revert global jQuery and $ variables and store jQuery in a new variable --> 
<script type="text/javascript"> 
var jQuery_1_1_3 = $.noConflict(true); 
</script> 

<!-- load jQuery 1.3.2 --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.js"></script> 

<!-- revert global jQuery and $ variables and store jQuery in a new variable --> 
<script type="text/javascript"> 
var jQuery_1_3_2 = $.noConflict(true); 
</script> 

然後

jQuery_1_1_3('<button>Use jQuery 1.1.3</button>') 
    .click(function() { 
     alert('Top: ' + jQuery_1_1_3(this).offset().top + '\n' + 
      'jQuery: ' + jQuery_1_1_3.fn.jquery); 
    }) 
    .appendTo('body');