【问题标题】:Jquery, mootools and prototype in JoomlaJoomla 中的 Jquery、mootools 和原型
【发布时间】:2011-04-18 12:36:21
【问题描述】:

您好,我的 chronoforms 需要 Mootools,我的灯箱 2 的原型(我认为),将来可能还需要一些 jQuery。
当我启用 Mootools 时,灯箱 2 在 IE 中不起作用,当我禁用它时,灯箱工作正常,但我的页面上的错误来自我的 chronoforms 表单。

有没有一种简单的好方法可以确保同时使用这三种方法不会出现任何问题?

JQuery.noConflict() 这样的东西并不是一个简单的解决方案。

【问题讨论】:

    标签: javascript mootools prototypejs javascript-framework conflict


    【解决方案1】:

    MooTools 和 Prototype 不能共存。

    这是因为它们都更改(扩展)本机主机对象(类型),例如 Element (MooTools) 和 ArrayFunctionStringNumber(两者)。你不能noConflict 这一辈子,每个方法都可以定义一次。

    当您引用 "foo".contains('oo') 时会很幸运,如果您获得 Prototype、Mootools 或 ES5 的实现(MooTools 1.5.1+),它会转到 String.prototype.contains(例如)。

    是时候重新考虑你使用的东西了,因为你真的应该去一个单一的框架——它们都可以单独做你需要的东西。

    不过,你也可以使用 MooTools + jQuery 或 Prototype + jQuery

    【讨论】:

    • 谢谢,所以我最好下载 slimbox 2 并将它与 mootools 一起使用(很多 joomla 插件都使用它)。如何使用noconflict,是否必须将每个$ 更改为JQuery?
    • 取决于您的 mootools 版本。如果您使用的是 mootools 1.2.3+,那么这很简单。只需在加载 mootools 之前加载 jquery,mootools 将使用document.id() 而不是 $。如果您使用的是较旧的 mootools,那么您需要noConflict,然后您需要加载 jquery。将 $ 更改为 jQuery 将起作用或在您的代码周围使用像 (function($) { console.log($); // jQuery })(jQuery); 这样的闭包 - 将 $ 分配给它应该在函数中的位置。只是小心范围管理。如果 mootools 转到 document.id,则相反 - 只需在上面传递 document.id。
    • 谢谢,它无需更改任何内容即可工作,因此 jquery 可能在 mootools 之前加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多