Javascript 将jQuery noConflict()与script.aculo.us一起使用
我有一个使用“小部件”(来自)的站点,其中包括JavaScript库。问题是我正在构建的站点位于WordPress上,因此存在经典的Javascript 将jQuery noConflict()与script.aculo.us一起使用,javascript,jquery,wordpress,debugging,Javascript,Jquery,Wordpress,Debugging,我有一个使用“小部件”(来自)的站点,其中包括JavaScript库。问题是我正在构建的站点位于WordPress上,因此存在经典的jQueryvsscript.aculo.us冲突 我知道我需要在.noConflict()模式下运行jQuery,但我一定是把语法弄错了。当我按如下方式将$分配给jQuery.noConflict时,它仍然会关闭script.aculo.us函数: var $ = jQuery.noConflict(); $(document).ready(function (
jQuery
vsscript.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,并且我假设script.aculo.us(通过主体中的小部件加载,因此在jQuery之后)正在尝试将$
重新分配回script.aculo.us
我如何将$
分配给jQuery,以使以后加载的script.aculo.us库不会发生冲突?我已经尝试了以下操作,但没有成功(以下代码导致script.aculo.us工作,但jQuery失败):
编辑
上述代码的调试控制台输出为:
uncaughttypeerror:Object#没有方法“ready”(匿名函数)
因此document.ready失败,因为它被分配给jQuery,而jQuery无法正确加载
编辑2
下面发布的两个答案(在本次更新时)都无法解决我所面临的问题。也许它们在技术上是正确的,但它们没有解决我的问题。将右键分配回$
没有任何作用
将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>
( function($) {
// Code to run on DOM ready
} )( jQuery ); // End document.ready
jQuery.noConflict();
我发现这个解决方案非常令人惊讶
首先,使用$j=jQuery.noConflict()代码>模式不起作用
第二,调用jQuery.noConflict()头部的代码>无效
有效的方法是:
奇怪的是,没有自动执行noConflict
,因此结果是除了上面列出的问题之外,我还需要在.noConflict()中包装该插件代码>也是。大声说出博客文章的作者,不知道为什么其他noConflict()代码>调用方法不起作用,但我很高兴我找到了这篇文章。这对我来说很有效,这样我就可以让jQuery和/原型很好地协同工作。这个救命恩人值得称赞
而不是:
jQuery(document).ready(function () {
// Code to run on DOM ready
}); // End document.ready
试试这个:
<script src="url to jquery"></script>
<script type="javascript">jQuery.noConflict();</script>
<script src="url to scriptaculous"></script>
( function($) {
// Code to run on DOM ready
} )( jQuery ); // End document.ready
这两个方案仍然会导致jQuery发生冲突(因此scriptaculous优先,而jQuery函数无法执行)。您能更具体地说明实际发生的情况吗jQuery
无论发生什么都应该引用jQuery(除非您将true
传递给.noConflict)。我得到以下错误Uncaught TypeError:Object#没有方法“ready”(匿名函数)
因此文档.ready
失败,因为它被分配给了jQuery,这是一个很好的想法,尽管它不起作用:(…在文档头中单独包含它的想法(因为它是WordPress,所以系统可能包含其他依赖于jQuery的插件)这是我没有想到的…谢谢@Marty McGee-我很久以前就发布了这篇文章,好几年没有看到它了-但是你的方法现在是我的默认方法,所以我会标记这个答案。