Может ли jQuery и Mootools работать вместе?Может ли jQuery и Mootools работать вместе?
Если нет, когда это так?
Может ли jQuery и Mootools работать вместе?Может ли jQuery и Mootools работать вместе?
Если нет, когда это так?
Существует больше, чем просто noConflict
.
jQuery - это интрузивная библиотека. Он добавляет внутренний jQuery123
(для некоторого рандомизированного значения для каждого экземпляра объекта 123
) для каждого элемента, к которому он прикасается (что-то вроде данных или обработчиков событий, среди прочих причин). В IE это свойство также находит отражение как атрибут.
Таким образом, если MooTools или любая другая библиотека (или действительно простой DOM-метод) приходит и начинает возиться с этими свойствами/атрибутами или клонированием элементов или взломать innerHTML
, они, вероятно, испортят эти якобы уникальные идентификаторы, в результате чего jQuery запутывается и начинает ошибочно вести себя так, как это необычно сложно отлаживать.
jQuery также спрятал кучу кода события, чтобы попытаться создать представление/focus/blur/focusin/focusout/mouseenter/mouseleave и работать в браузерах. Это может смутить другой библиотечный код, который его не ожидает.
Итак, с помощью jQuery 1.4 вы можете просто уйти с использованием другой библиотеки в то же время, если они работают над отдельными элементами, которые не взаимодействуют друг с другом. (jQuery 1.3 также был намного более беспорядочным в отношении того, к каким элементам он «коснулся».)
Но в целом я бы не рекомендовал две основные структуры на одной странице.
Просто используйте jQuery.noConflict назначить JQuery на что-то другое, чем $
:
<script>
jQuery.noConflict();
</script>
$
теперь ссылается на то, что вы установите его, прежде чем вы инициировали JQuery. jQuery доступен через объект jQuery
.
JQuery может быть использован в не-конфликта режим:
jQuery.noConflict();
или может использовать jQuery
вместо $
.
jQuery('#myelement').hide();
Как в MooTools есть document.id()
метод, который может быть использован вместо $
:
document.id('myelement');
В случае, если вы хотите, чтобы иметь возможность использовать $
вы можете попробовать сниппет ниже:
(function($) {
$('#myelement').click(function() {
...
});
})(jQuery);
Точно так же вы можете использовать $
от MooTools
Да, конечно, вы можете в режиме совместимости. Но вы должны быть осторожны с дополнениями jQuery, потому что это может вызвать некоторые головные боли, поскольку они не программируются в режиме совместимости и могут вызывать столкновения с другими дополнениями библиотек. Чтобы исправить это, вам просто нужно изменить $ per jQuery в дополнениях
надеюсь, что это поможет.
Используйте безопасный в долларах режим в Mootools, и вы должны быть в порядке, поскольку jQuery не распространяется на аборигенов.
следующие ответы работают с любой библиотекой с jquery, а не только с mootools –