Using jQuery noConflict() with script.aculo.us

Using jQuery noConflict() with script.aculo.us

本文关键字:script aculo us with jQuery noConflict Using      更新时间:2023-09-26

我有一个使用"widget"(来自http://healcode.com)的网站,其中包括script. acloo .us JavaScript库。问题是,我正在建设的网站是在WordPress上,所以有经典的jQueryscript.aculo.us冲突。

我知道我需要在.noConflict()模式下运行jQuery,但我必须得到语法错误。当我将$分配给jQuery .noConflict时,它仍然关闭了script. aclous函数:

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,我假设script.aculo.us(通过主体中的小部件加载,因此在jQuery之后)试图重新分配$给script.aculo.us。

我怎么能分配$的方式,后来加载的脚本。aclous库不会冲突的jQuery ?我已经尝试了以下没有任何成功(以下代码导致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)所以文档。ready失败,因为它被分配给jQuery,不知何故不能正确加载…

编辑2

这两个(在这个更新的时候)回答张贴在下面没有解决我正在努力解决的问题。也许它们在技术上是正确的,但是它们不能解决我的问题。

这对我有用,所以我可以有jQuery和script.aculo。我们/原型合作得很好。这个救星的功劳要归功于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

我发现这个解决方案非常令人惊讶!

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

第二,在头部调用jQuery.noConflict();不起作用。

有效的方法是:http://codeimpossible.com/2010/01/13/solving-document-ready-is-not-a-function-and-other-problems/

奇怪的是,Coda滑块2.0插件不会自动执行noConflict,所以结果是除了上面列出的问题,我还需要在.noConflict();中包装该插件。大声喊出博客文章的作者,不知道为什么其他noConflict();调用方法不起作用,但我很高兴我找到了这篇文章。

将jQuery直接分配给$没有任何作用。

给jQuery指定一个不同的变量:

var j$ = jQuery.noConflict();

或者不给它赋值:

jQuery.noConflict();

试试这个:

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