2009-06-09 103 views
1

我正在使用prototype和script.aculo.us的組合來實現我的asp.net頁面中的lightbox效果。我的頁面中也包含了jquery。我的頁面中有幾個DIV標籤,但是,包括在我的頁面頭部原型文件後,我不能夠使用jQueryjQuery -prototype衝突

var div = $("#divLeftSideModelsList"); 
alert(div) 

給我一個錯誤說,對象爲空 但

var div = document.getElementById("divLeftSideModelsList") 
閱讀我的javascript的div

給我的對象。

這是因爲jQuery和其他框架之間存在一些衝突嗎?

請指點

+0

你已經解決了這個問題?您需要進一步的幫助嗎?或者您可以將問題標記爲已回答? – 2009-06-23 10:44:36

回答

6

對此有讀:http://docs.jquery.com/Using_jQuery_with_Other_Libraries

顯示很好的例子:)

重寫$ -FUNCtion

但是,您可以通過在jQuery和其他庫都加載後的任意時刻調用jQuery.noConflict()來覆蓋該默認值。例如:

<html> 
<head> 
    <script src="prototype.js"></script> 
    <script src="jquery.js"></script> 
    <script> 
    jQuery.noConflict(); 

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

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 

這會將$恢復到其原始庫。您仍然可以在應用程序的其餘部分使用「jQuery」。

此外,還有另一種選擇。如果你想確保的jQuery不會與其他庫發生衝突 - 但你要一個簡短的名字的好處,你可以做這樣的事情:

<html> 
<head> 
    <script src="prototype.js"></script> 
    <script src="jquery.js"></script> 
    <script> 
    var $j = jQuery.noConflict(); 

    // Use jQuery via $j(...) 
    $j(document).ready(function(){ 
     $j("div").hide(); 
    }); 

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 
-2

此代碼是否工作:

​​
2

你應該noConflict mode使用jQuery。然後使用jQuery()而不是$()

0

奇怪的錯誤。無論如何,原型和jQuery都重新定義了全局變量$。

請閱讀this瞭解jQuery如何與其他庫發揮良好效果。

它基本上是說,調用jQuery.noConflict()離開$變量單獨爲其他庫使用