2010-07-28 6 views

ответ

8

Существует больше, чем просто noConflict.

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

Таким образом, если MooTools или любая другая библиотека (или действительно простой DOM-метод) приходит и начинает возиться с этими свойствами/атрибутами или клонированием элементов или взломать innerHTML, они, вероятно, испортят эти якобы уникальные идентификаторы, в результате чего jQuery запутывается и начинает ошибочно вести себя так, как это необычно сложно отлаживать.

jQuery также спрятал кучу кода события, чтобы попытаться создать представление/focus/blur/focusin/focusout/mouseenter/mouseleave и работать в браузерах. Это может смутить другой библиотечный код, который его не ожидает.

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

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

0

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

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

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

2

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

jQuery.noConflict();

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

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

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

document.id('myelement');

В случае, если вы хотите, чтобы иметь возможность использовать $ вы можете попробовать сниппет ниже:

(function($) { 

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


})(jQuery); 

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

0

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

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

1

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

Смежные вопросы