我有一个使用“小部件”(来自 http://healcode.com )的网站,其中包括 script.aculo.us JavaScript 库。问题是我正在构建的网站是在 WordPress 上,所以有经典的 jQuery
对比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 之后)正在尝试重新分配 $
回到 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 #<HTMLDocument> has no method 'ready' (anonymous function)
所以 document.ready 失败了,因为它被分配给了 jQuery,而 jQuery 以某种方式无法正确加载...
编辑 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
关于javascript - 在 script.aculo.us 中使用 jQuery noConflict(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524700/