2011-06-23 52 views
2

我的網站上我使用了一些新的JQuery UI控件,如datepicker和對話框。JQuery:不同版本的衝突 - 有沒有一種方法可以隔離版本?

我最近在網上發現了一個很酷的項目,展示瞭如何製作google儀表板,該儀表板也在bbc.co.uk網站上使用。 這允許用戶在選擇時可以很好地移動小部件。

我創建了一個測試解決方案,它工作。

當我使用正確的Jquery控件和版本將它集成到我的存在解決方案中時,它會在螢火蟲中顯示一些錯誤。

它們是:

$("#menu").mouseleave is not a function 
$('#menu').mouseleave(function() { 

爲這一段代碼:

$('#menu').mouseleave(function() { 
     setSubItemVisibility(); 
    }); 

的日期選擇jQuery用戶界面控制:

$(".startdate").datepicker is not a function 
$(".startdate").datepicker({ dateFormat: 'dd/mm/yy' }); 

的對話框:

$("#inputupdatecontrol").dialog is not a function 
position: 'top center' 

這一切工作正常,直到我把與餅乾dashobard解決方案在這裏找到了inettuts:http://james.padolsey.com/javascript/inettuts-with-cookies/

這包括以下JQuery的版本和文件:

jquery-1.2.6.min.js 
jquery-ui-personalized-1.6rc2.min.js 
cookie.jquery.js 
inettuts.js 

有什麼辦法,我可以單獨的這些文件來自我現有的JQuery版本附帶的功能? 我目前正在使用最新的Jquery版本,並且沒有問題,只有當我從舊版本中添加這個功能時,我纔會遇到問題。

我只在一頁上使用這個舊版本的Jquery,但是當然需要新版本。

乾杯

回答

2

好這裏是完整的模式,把下面的:

<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返回一個對其自身的基本「裝箱」的引用,它在另一個變量中。

所以叫上1.3的功能,你會打電話

jq13('#'+ myId).bind('onclick',function(){}); 

注意:您必須加載的JavaScript的第一個版本的最後制定。

+0

謝謝@ Pete2k,這看起來像答案,但我如何實現它?我是否將它用於最新的JQuery版本或用於儀表板的舊版本(版本1.2.6)。我已經使用這個,仍然會得到相同的錯誤。 – Funky

+0

嗨,我已經更新了你的答案 – Exitos

+0

感謝Pete2k,它仍然不會工作,我不太清楚你的意思是關於加載文件的順序 – Funky