JQuery без конфликтов
Часто встречаюсь с проблемой, когда библиотека Jquery начинает конфликтовать с какой-нибудь другой JS библиотекой на сайте, после чего функционал обоих библиотек перестает работать. Такая ситуация встречается например в Modx, когда в шаблон добавлен какой-нибудь JQuery функционал и вы заходите на страницы сайта зарегистрированным в административной части, при этом вы получите сообщение о том, что код Jquery не может быть выполнен, так как TypeError: $(...) is null.
Как упоминал выше, такой вид ошибок возникает из-за конфликта использования нескольких JS библиотек на сайте с JQuery, так как многие библиотеки/скрипты используют объявление $ для своих нужд, а так как $ это ссылка на класс JQuery, то здесь и возникает конфликт. Возникает резонный вопрос, возможно ли избежать подобных конфликтов? Да, возможно.
Для этого в Jquery предусмотрен специальный механизм, под названием noConflict(), о нем можно узнать больше информации из официальной документации по JQuery. В своей практике я использую вариант переопределения названия ссылки на Jquery. Делается это следующим образом.
Исходный код:
$(document).ready(function() {
$("#info").show();
});
Безопасный код:
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery("#info").show();
});
, т.е. использовав конструкцию jQuery.noConflict() мы начинает обращаться к Jquery через jQuery, а не через $. Внеся изменения в свой код по такому принципу вы больше не столкнетесь с конфликтом JQuery и других библиотек/скриптов.
Комментарии (0)