您可以通過在no-conflict mode運行你的jQuery的版本實現這一目標。 「無衝突」模式是讓jQuery在其他框架(如prototype)上工作的典型解決方案,也可以在此處使用,因爲它基本上爲您加載的每個jQuery版本命名空間。
<script src="jQuery1.3.js"></script>
<script>
jq13 = jQuery.noConflict(true);
</script>
<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>
這一變化將意味着任何你想用就需要使用jq13
而非$
,例如被稱爲jQuery的東西
jq13("#id").hide();
它不具有相同的頁面上運行的兩個版本一個理想的情況,但如果你已經別無選擇,那麼上面的方法應該讓你同時使用兩個不同的版本。
也出於好奇,如果我們要使用額外的控件 需要引用另一個版本的jQuery?
如果您需要添加的jQuery的另一個版本,你可以擴展以上:
<script src="jQuery1.3.js"></script>
<script>
jq13 = jQuery.noConflict(true);
</script>
<script src="jQuery1.3.1.js"></script>
<script>
jq131 = jQuery.noConflict(true);
</script>
<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>
變量jq13
和jq131
將分別被用於您所需要的特定版本的功能。
重要的是,由原始開發商使用的jQuery的最後加載 - 原開發者可能會寫的假設$()
會使用他們的jQuery的版本下他們的代碼。如果你在他們之後加載另一個版本,$
將被你加載的最後一個版本「抓住」,這意味着原始開發者的代碼運行在最新的庫版本上,使得noConflicts
有點多餘!
是否控制未發佈更新的作者的作者?還是新版本不兼容? 非常奇怪的是,商業第三方控件供應商創建了一個硬編碼到經常更新的開源javascript特定版本的控件。 – BlackMael 2009-02-09 14:18:49
如果您使用堅持固定版本的jQuery的多服務器控件,我看不出你是如何搞砸的。 – BlackMael 2009-02-09 14:20:58
並非每個插件作者都會定期更新/更新其代碼。我也遇到了這個問題,但後來我轉而採用了經常更新的社區驅動的等價物。 – 2011-12-29 12:30:23