注意:我知道類似的問題已被要求here和here,但我正在尋找關於如何完成這項工作或完全避免它的很好理由的額外說明。是否可以在同一頁面上使用2個jQuery版本?
我在已經使用舊版本jQuery庫(1.1.3.1)的現有網站中添加了功能。我一直在針對最新版本的jQuery庫(1.4.2)編寫我的附加功能。我只使用新版本的jQuery測試了該網站,並且它破壞了功能,所以現在我正在考慮在同一頁上使用這兩個版本。這怎麼可能?
我需要在我的代碼中做什麼來指定我使用的是一個版本的jQuery而不是另一個?例如,我會在頁面的標題中放入兩個版本的jQuery的<script>
標籤,但是我需要做些什麼以確保在調用代碼中知道我調用了某個版本的庫或另一個版本?
也許是這樣的:
//Put some code here to specify a variable that will be using the newer
//version of jquery:
var $NEW = jQuery.theNewestVersion();
//Now when I use $NEW, I'll know it's the newest version and won't
//conflict with the older version.
$NEW('#personName').text('Ben');
//And when I use the original $ in code, or simply 'jquery', I'll know
//it's the older version.
$('#personName').doSomethingWithTheOlderVersion();
UPDATE:讀一些答案後,我開始懷疑,如果它甚至是一個好主意,試圖在所有玩這個遊戲...
我同意更新現有的代碼是一個更好的主意。然而,至少據我所知,jQuery比許多其他庫沒有侵入性(例如,我沒有在其他庫中看到「noConflict」)。 – 2010-05-14 20:49:02
jQuery向其「接觸到的所有元素」添加了expando屬性, ,這是所有具有附加「數據」的元素(比如事件處理程序),並且在1.4之前它甚至會檢查附加數據的所有元素(它們可以很容易地成爲大部分文檔 - 非常有創意!)。如果另一個框架或版本複製,刪除或更改這些屬性,jQuery將處於不一致的狀態。 – bobince 2010-05-15 10:13:32
我同意你的前提,這可能不是一個好主意。不過,我被卡住了,因爲升級站點以使用1.4.2根本不是一種選擇。哦動態語言的樂趣... – 2010-05-15 15:23:36