Недавно я столкнулся с проблемой когда две моих библиотеки начали
конфликтовать, а работать без них скрипты не будут, у меня было 3
выхода - закрыть на всё глаза, удалить одну библиотеку тем самым лишится
пол сайта, и наконец найти разумное решение потратив на него несколько
часов. Так вот решение нашлось само собой -
[Function] jQuery.noConflict()
Используйте данную функция для получения контроля над $ переменной,
возвращаясь назад к какой угодно библиотеке, первоначально
установленной.
Функция предотвращает конфликт jQuery с $ объектом другой библиотеки.
При использовании данной функции, для получения доступа к jQuery,
используйте jQuery переменную. К примеру, если вы использовали $("div
p"), то теперь вы должны указать jQuery("div p"). ПРИМЕЧАНИЕ: Данная
функция должна быть включена после подключенного jQuery javascript
файла, но до подключения любой другой конфликтующей библиотеки,а так же
до того как фактически другая конфликтующая библиотека будет вызвана.
noConflict может быть вызвана в конце jQuery.js файла, чтобы глобально
отключить псевдоним $() jQuery. jQuery.noConflict возвращает ссылку на
jQuery, что может быть использовано для аннулирования псевдонима $()
jQuery объекта.
Пример:
Установить соответствие оригинального объекта,
который ссылался на переменную $, обратно к переменной $.
Code
jQuery.noConflict();
// Выполнить что-нибудь с jQuery
jQuery("div p").hide();
// Выполнить что-нибудь с другой библиотекой $()
$("content").style.display = 'none';
Вернуть псевдоним $, а затем создать и выполнить функцию, обеспеченную $ как jQuery псевдоним внутри области видимости функции. Внутри функции оригинальный объект $ не доступен. Использование функции предпочтительно для большинства плагинов, которые конфликтуют с другими библиотекам.
Code
jQuery.noConflict();
(function($) {
$(function() {
// код, использующий $ как псевдоним jQuery
});
})(jQuery);
// другой код, использующий $ как псевдоним другой библиотеки
Вы можете "связать" функцию jQuery.noConflict() с сокращенным вариантом функции ready, для компактности кода.
Code
jQuery.noConflict()(function(){
// код используемый jQuery
});
// другой код использующий $ как псевдоним другой библиотеки
Создать различные псевдонимы, взамен jQuery, для использования в остальном скрипте.
Code
var j = jQuery.noConflict();
// Сделать что-нибудь с jQuery
j("div p").hide();
// Сделать что-нибудь с другой библиотекой $()
$("content").style.display = 'none';