Jquery, mootools и прототип в Joomla

Привет, мне нужен Mootools для моих хроноформ, прототип для моего лайтбокса 2 (я думаю) и, возможно, также немного jQuery в будущем.
Когда я включаю Mootools, лайтбокс 2 не работает в IE, когда я отключаю его, лайтбокс работает нормально но я получаю ошибки на своей странице из моей формы хроноформ.

Есть ли хороший и простой способ убедиться, что у вас не возникнет проблем с использованием всех трех вместе?

А что-то вроде JQuery.noConflict() — не простое решение.


person Ruben    schedule 18.04.2011    source источник


Ответы (1)


Вы не можете сосуществовать MooTools и Prototype.

Это связано с тем, что они оба изменяют (расширяют) собственные объекты хоста (типы), такие как Element (MooTools) и Array, Function, String, Number (оба). Вы не можете noConflict этого на всю жизнь, каждый метод может быть определен один раз.

Будет удачей, когда вы сошлетесь на "foo".contains('oo'), и он перейдет к String.prototype.contains (например), если вы получите реализации Prototype, Mootools или ES5 (MooTools 1.5.1+).

Пришло время пересмотреть то, что вы используете, поскольку вам действительно следует перейти на единую структуру — все они могут делать то, что вам нужно по отдельности.

Вы также можете использовать MooTools + jQuery или Prototype + jQuery, однако

person Dimitar Christoff    schedule 18.04.2011
comment
Спасибо, поэтому я лучше скачаю slimbox 2 и использую его вместе с mootools (многие плагины joomla используют его). Как использовать отсутствие конфликтов, нужно ли менять каждый $ на JQuery? - person Ruben; 18.04.2011
comment
зависит от вашей версии mootools. если у вас mootools 1.2.3+ то все просто. просто загрузите jquery перед загрузкой mootools, и mootools упадет до использования document.id() вместо $. если вы используете более старые mootools, вам нужен noConflict, а затем вам нужно загрузить jquery. изменение $ на jQuery будет работать или использовать закрытие, подобное (function($) { console.log($); // jQuery })(jQuery); вокруг вашего кода, сохраняя $ назначенным тому, что должно быть внутри функции. просто осторожнее с управлением областью. обратное применяется, если mootools переходит к document.id - просто передайте document.id выше. - person Dimitar Christoff; 18.04.2011
comment
спасибо, чувак, он работает без каких-либо изменений, поэтому jquery, вероятно, загружается до mootools. - person Ruben; 18.04.2011