【发布时间】:2011-01-31 14:51:41
【问题描述】:
我正在使用 jQuery 为现有页面构建模块。该页面也使用原型,因此存在通常的 jQuery 原型冲突。我正在使用 jQuery.noConflict() 并且在所有浏览器中一切正常,除了 ie(在 ie8 中测试)。 我已经在这里和其他网站上阅读了所有类似的问题,但我无法让它发挥作用。 这是关于它是如何工作的:页面使用原型(effects.js、prototip.js 等)加载原型和其他 .js 文件,然后加载我的模块(又名 jQuery 在原型之后加载)。 我读到将原型的 $() 函数更改为 $$$(),但这是不可能的(许多其他使用原型的模块将需要更改),所以它只是关于更改我的 js。
然后我读到了使用
(function($) {
//my jQuery code in here
})(jQuery);
但我并不完全理解它。我的代码大概是这样的:
$J = jQuery.noConflict();
$J(document).ready(function(){
fun1();
//jquery stuff
fun2();
});
function fun1(){
//stuff/jQuery code/ call other functions
}
function fun2(){
//stuff/jQuery code/ call other functions
}
如果我将以上所有内容放入(function($) { /*all the above*/})(jQuery);
我知道所有函数都是未定义的。
我做错了什么?还是有其他解决方案?
【问题讨论】:
-
我强烈建议尝试使用其中一种,但不要同时使用。你可以让它们不发生冲突而不会有太多麻烦,但这意味着你的用户必须加载两个不同的库。 jQuery 和 Prototype 都有插件,可以做你想做的大部分事情。
标签: jquery internet-explorer internet-explorer-8 prototypejs conflict