Могут ли jQuery и Mootools работать вместе? - PullRequest
6 голосов
/ 28 июля 2010

Могут ли jQuery и Mootools работать вместе ??

Если нет, то когда это так?

Ответы [ 5 ]

8 голосов
/ 28 июля 2010

Это больше, чем просто noConflict.

jQuery - это навязчивая библиотека.Он добавляет внутреннее свойство jQuery123 (для некоторого рандомизированного значения для каждого экземпляра 123) к каждому элементу, к которому он относится (что относится к обработчикам данных или событий, среди прочих причин).В IE это свойство также отражается как атрибут.

Так что, если MooTools или любая другая библиотека (или действительно простой метод DOM) приходит и начинает связываться с этими свойствами / атрибутами, или элементами клонирования, иливзломав innerHTML, они, вероятно, испортят эти предположительно уникальные идентификаторы, что приведет к путанице в jQuery и начнёт плохо себя вести таким образом, что его чрезвычайно трудно отлаживать.попытайтесь заставить события submit / focus / blur / focusin / focusout / mouseenter / mouseleave работать в браузерах.Это может привести к путанице в коде другой библиотеки, который его не ожидает.

Итак, с jQuery 1.4 вы можете просто покончить с использованием другой библиотеки одновременно, если они работают с отдельными элементами, которыене взаимодействовать друг с другом.(jQuery 1.3 также был гораздо более разборчив в том, к каким элементам он «прикасался».)

Но в целом я бы не рекомендовал две основные платформы на одной странице.

2 голосов
/ 28 июля 2010

jQuery можно использовать в бесконфликтном режиме:

jQuery.noConflict();

или может использовать jQuery вместо $.

jQuery('#myelement').hide();

Также в MooTools есть метод document.id(), который можно использовать вместо $:

document.id('myelement');

Если вы хотите использовать $, вы можете попробовать фрагмент ниже:

(function($) {

   $('#myelement').click(function() {
       ...
   });


})(jQuery);

Таким же образом вы можете использовать $ из MooTools

1 голос
/ 23 августа 2010

Используйте долларовый безопасный режим в Mootools, и все должно быть в порядке, поскольку jQuery не расширяет нативы.

0 голосов
/ 31 июля 2010

Да, конечно, вы можете в режиме совместимости.Но вы должны быть осторожны с дополнениями jQuery, потому что это может вызвать некоторые головные боли, так как они не программируются в режиме совместимости, и может вызвать конфликты с дополнениями других библиотек.Чтобы это исправить, вам просто нужно поменять $ на jQuery в дополнениях

надеюсь, это поможет.

0 голосов
/ 28 июля 2010

Просто используйте jQuery.noConflict, чтобы назначить jQuery чему-то другому, кроме $:

<script>
   jQuery.noConflict();
</script>

$ теперь относится к тому, что вы установили до того, как вы инициировали jQuery.jQuery доступен через объект jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...