2011-12-15 89 views
1

我有一個網站使用「小部件」(從http://healcode.com),其中包括script.aculo.us JavaScript庫。問題是,我建立的網站是在WordPress上,所以有經典的jQueryscript.aculo.us衝突。使用jQuery noConflict()與script.aculo.us

我知道我需要在.noConflict()模式下運行jQuery,但我必須得到錯誤的語法。當我分配$將jQuery .noConflict如下,它仍然會關閉script.aculo.us功能:

var $ = jQuery.noConflict(); 

$(document).ready(function() { 

    //#nav-main dropdown effects 

    $('#nav-main ul li').hoverIntent(function() { 
     $(this).find('.dropdown').stop(true,true).slideDown('900'); }, 
      function(){ 
       $(this).find('.dropdown').stop(true,true).slideUp('500'); 
     }); 
}); // end document.ready 

我知道我在.noConflict()模式分配$ jQuery的,我認爲劇本。 aculo.us(它通過主體中的一個小部件加載,因此在jQuery之後)試圖將$重新分配回script.aculo.us。

我該如何將$分配給jQuery,使得後來加載的script.aculo.us庫不會發生衝突?我已經嘗試過沒有任何成功以下(下面的代碼會導致script.aculo.us工作,但jQuery的失敗):

jQuery(document).ready(function() { 

    //#nav-main dropdown effects 

    jQuery('#nav-main ul li').hoverIntent(function() { 
     jQuery(this).find('.dropdown').stop(true,true).slideDown('900'); }, 
      function(){ 
       jQuery(this).find('.dropdown').stop(true,true).slideUp('500'); 
     }); 
}); // end document.ready 

編輯

調試控制檯輸出上述代碼:

Uncaught TypeError: Object #<HTMLDocument> has no method 'ready' (anonymous function)如此,因爲它分配給jQuery的,這是有點不正常加載的的document.ready失敗...

EDIT 2

這兩個(在本次更新時)答覆下面沒有做任何事情來解決我正在努力解決的問題。也許他們在技術上是正確的,但他們沒有解決我的問題。

回答

2

這對我有用,所以我可以讓jQuery和script.aculo.us/Prototype一起很好地工作。積分爲codeimpossible的救生員!

相反的:

jQuery(document).ready(function() { 

    // Code to run on DOM ready 

}); // End document.ready 

試試這個:

(function($) { 

    // Code to run on DOM ready 

})(jQuery); // End document.ready 
0

指定jQuery回到$什麼也沒做。

無論是jQuery的分配到不同的變量:

var j$ = jQuery.noConflict(); 

還是不要把它分配給什麼:

jQuery.noConflict(); 
+0

這些建議都還是引起了jQuery衝突(因此有Scriptaculous的優先和jQuery功能無法執行)。 – Brian 2011-12-15 18:25:01

+0

你能更具體地瞭解實際發生的事情嗎? `jQuery`應該引用jQuery,不管什麼(除非你將`true`傳遞給.noConflict)。 – BNL 2011-12-15 18:28:38

+0

我得到以下錯誤:'未捕獲的TypeError:對象#沒有方法'準備好' (匿名函數)``因此,document.ready`失敗,因爲它被分配給jQuery,它不能正確加載。 – Brian 2011-12-15 18:31:49

0

試試這個:

<script src="url to jquery"></script> 
<script type="javascript">jQuery.noConflict();</script> 
<script src="url to scriptaculous"></script> 
1

我找到了解決辦法非常奇怪!

首先,使用$j = jQuery.noConflict();模式不起作用。

二,打電話jQuery.noConflict();頭不管用。

是做的工作是這樣一個方法:http://codeimpossible.com/2010/01/13/solving-document-ready-is-not-a-function-and-other-problems/

奇怪的是,Coda Slider 2.0 plugin不會自動做noConflict所以事實證明,除了上面列出的問題,我需要來包裝.noConflict();該插件以及。大聲呼喊博客文章的作者,不知道爲什麼其他noConflict();調用方法不起作用,但我很高興我找到了這篇文章。