2010-11-09 38 views
0

提前問過一個問題並得到了很好的迴應,你們真是太棒了。現在的問題是如何正確實施解決方案。jQuery.noConflict()修復與prototype.js一起使用jQuery時不起作用

我試圖使用jQuery和原型庫相互使用jQuery.noConfict()FIX:

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

    <script> 

    jQuery.noConflict(); 

    // Use jQuery via jQuery(...) 
jQuery(document).ready(function(){ 
    jQuery("slideshow1").hide(); 
}); 

// Use Prototype with $(...), etc. 
$('#lightbox').hide(); 
    </script> 

<script type="text/javascript" src="./js/lightbox.js"></script> 
<script type="text/javascript" src="./js/scriptaculous.js"></script> 


<script type="text/javascript" src="http://malsup.github.com/chili-1.7.pack.js"></script> 
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.lite.1.0.min.js"></script> 

<script type="text/javascript"> 

$(function() { 
    $('#slideshow1').cycle({ 
     delay: 2000, 
     speed: 1000, 
    }); 


}); 

</script> 

我明白一個道理(在默認情況下,jQuery使用「$」作爲「jQuery」的快捷方式),並且解決方案看起來應該起作用。但是,實施時頁面會以空白背景顯示。

This is a demo of the page, using the current script implementation.

如何將一個解決這個問題?

+0

什麼是* *實際問題?例如。存在哪些錯誤指示?頁面有什麼錯誤(如果有的話)?不要隨意猜測 - 計算機的表現非常確定。 – 2010-11-09 05:59:11

回答

3

那麼,首先,你連接prototype.js不當。它應該是./js/prototype.js

編輯
也少了幾個人:./js/dragdrop.js ./js/controls.js ./js/slider.js

然後,它看起來像你使用jQuery不是原型(儘管我對原型沒有任何經驗)。我在他們的網站上查了一下,你把id傳入$()函數,而不是css-like/jQuery選擇器。因此,如果你有$("#slideshow1").hide();,那麼如果它是一個原型函數,你必須將其設置爲jQuery("#slideshow1").hide();$("slideshow1").hide();。對於頁面中的其他腳本,這也是一樣的。

編輯2
在修復丟失的JavaScript文件,這條線:$('slideshow1').hide();應該jQuery('#slideshow1').hide();

而且這些:

$(function() { 
    $('#slideshow1').cycle({ 
     delay: 2000, 
     speed: 1000, 
    }); 
});

應該是:

jQuery(function() { 
    jQuery('#slideshow1').cycle({ 
     delay: 2000, 
     speed: 1000, 
    }); 
});
+0

那真是令人尷尬。修正了,但問題仍然存在。 – WednesdayWolf 2010-11-09 05:44:45

+0

@WednesdayWolf - 還有其他幾個缺失的文件:./js/dragdrop.js ./js/controls.js ./js/slider。js – 2010-11-09 05:46:11

+0

我正在使用jQuery的循環:http://malsup.com/jquery/cycle/lite/和燈箱的原型。我只是意識到我沒有把id與正確的庫聯繫起來。所以新的二級庫關聯是:$(「#slideshow1」)。hide(); $( 「收藏夾」)隱藏()。但是,這打破了幻燈片。 – WednesdayWolf 2010-11-09 06:00:31

0

我認爲原型做$(id),而不是$(選擇器)作爲jQuery的。它也返回實際的DOM元素。所以例如在原型中,$('#slideshow1').hide()就是$('slideshow1').style.visibility = 'hidden',我相信。對於這樣的事情,jQuery會更容易。它看起來好像所有的$()調用都是真正的jQuery()調用,並且需要重寫Prototype的工作方式 - 或者將$改爲jQuery。

編輯︰實際上,該$甚至沒有原型...原型是$$

+0

有趣。將$('#slideshow1')。hide()更改爲$('slideshow1')。style.visibility ='hidden',但它沒有解決問題。我正在使用的解決方案是直接從JQuery文檔中獲取頁面,該文檔使用prototype作爲示例。 http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Overriding_the_.24-function – WednesdayWolf 2010-11-09 05:48:55

+2

$也是原型,但它是選擇ID的簡稱。 $$允許您像使用jQuery一樣使用CSS樣式的選擇器。 – 2010-11-09 05:51:25

相關問題