2011-06-13 229 views
6

我正在嘗試使用Nivo JQuery Slider(http://nivo.dev7studios.com/)和可滾動畫廊(http://flowplayer.org/tools/demos/scrollable/index.html) 。JQuery版本衝突

現在,我遇到了一個問題,基本上NIVO滑塊使用此jQuery庫:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 

和滾動庫使用這一個:

<script src="http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"></script> 

當兩者都被啓用,只有縮略圖畫廊的作品(因爲它的腳本導入是在nivo之後完成的),當1.42版本啓用時,只有Nivo能夠運作,並且只有1.2.5版本啓用時,只有可滾動畫廊纔有效。

我該怎麼辦?

+1

也許是http://stackoverflow.com/questions/1566595/can-i-use-multiple-versions-of-jquery-on-the-same-page的副本 – 2011-06-13 14:56:37

+1

嘗試更改每個.js文件加載時同時使用一個兼容的jQuery版本。 – ngen 2011-06-13 14:57:17

+0

堅持版本1.2.5的庫是我非常小心的 - 這是一個非常舊的版本,所以如果這個插件沒有被更新,那麼它將來會變得更糟。有像十億圖片庫插件可供選擇,所以應該有可能找到更積極維護的東西。 – Pointy 2011-06-13 15:03:32

回答

8

使用此解決方案,如果你不能用一個單一的jQuery文件兩個插件:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    var jQuery_1_4_2 = jQuery.noConflict(); 
</script> 
<script src="http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"></script> 

使用jQuery 1.4.2,在海基會使用它(自我執行的函數)像這樣把代碼:

(function($){ 
    //code using jQuery 1.4.2 
    //here the $variable will be the jQuery object of 1.4.2 
})(jQuery_1_4_2) 

對於jQuery 1.2.5,您可以直接使用$變量。

更新: 根據您的評論,以下是使用它的方式。

如果你想使用jQuery 1.4.2,使用jQuery_1_4_2對象
例如:jQuery_1_4_2("#abc").slider(options)

如果你想使用jQuery 1.2.5使用$或jQuery對象
例如:$("#abc").scrollable(options)

+0

我對JQuery並不十分熟悉,而且我也沒有真正理解我需要在第二部分中做什麼。 – 2011-06-14 12:04:51

+0

更新了我的答案,但仍然最好只有一個版本的jQuery在網頁 – 2011-06-14 16:15:02

+0

謝謝,所以基本上使用一個特定的jQuery庫取決於你想要的div – 2011-06-15 10:11:39

2

jquery tools網站上說,升級將在一個月內完成,使其符合Jquery 1.6標準。

這就是說,有很多不同的方法來剝皮這隻貓,而且大多數不是這個時代的背後。我一直在使用jQuery Infinite Carousel,並取得了巨大成功。它看起來和行爲幾乎相同,並且與最新版本的jQuery沒有衝突。

從您的發帖中不清楚,但我會避免加載兩個不同版本的Jquery,如果你這樣做。這是一個額外的開銷噸,真的沒有幫助你的網站。

+0

謝謝,我決定去這個旋轉木馬,它看起來很好。升級時應該值得,謝謝。 – 2011-06-14 12:49:11

1

只是簡單複製粘貼&這個Java腳本代碼在你的 「HEAD」 TAG

// jQuery的版本衝突代碼

var newJQuery = jQuery.noConflict(true), 
     oldJQuery = jQuery; 

    (function ($) { 
     // code that needs 1.4.2 goes here 
    }(newJQuery)); 

    (function ($) { 
     // code that needs 1.2.6 goes here 
    }(oldJQuery)); 

    // code that needs oldJQuery and newJQuery can go here 

,看看它的工作110%.............. :)享受!