Блог/Бесконфликтный jQuery

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 и других библиотек/скриптов.

Тэги: jQuery, javascript
Просмотров: 1230
Комментариев:

Комментарии (0)