在script.aculo.us中使用jQuery noConflict()
我有一个使用“widget”(来自http://healcode.com )的网站,其中包含script.aculo.us JavaScript库。 问题是我正在构建的网站是在WordPress上,所以有经典的jQuery
vs 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,我假设script.aculo.us(通过主体中的小部件加载,因此在jQuery之后)试图重新分配$
back to script.aculo.us。
如何以稍后加载的script.aculo.us库不会冲突的方式将$
分配给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 # has no method 'ready' (anonymous function)
因此document.ready失败,因为它被分配给jQuery,它以某种方式无法正确加载…
编辑2
下面发布的2个(在本次更新时)的答案都没有解决我正在努力解决的问题。 也许它们在技术上是正确的,但它们并没有解决我的问题。
这对我有用,所以我可以让jQuery和script.aculo.us / Prototype一起工作。 信用对于这个救星来说代码是不可能的!
代替:
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 Slider 2.0插件不会自动执行noConflict
所以事实certificate,除了上面列出的问题,我需要将该插件包装在.noConflict();
同样。 喊出博客文章的作者,不知道为什么其他noConflict();
调用方法不起作用,但我很高兴我找到了post。
将jQuery分配回$
不会做任何事情。
将jQuery分配给另一个变量:
var j$ = jQuery.noConflict();
或者不要将它分配给任何东西:
jQuery.noConflict();
试试这个: