jQuery - Как Избежать Конфликты с Другими Библиотеками

Библиотека jQuery и фактически все ее плагины содержатся в пределах пространства имен jQuery. Как правило, глобальные объекты хранятся в пространстве имен jQuery также, таким образом, невозможно получить конфликт между jQuery и любой другой библиотекой (как prototype.js, MooTools или YUI).

Однако есть одна оговорка: по умолчанию jQuery использует $ как ярлык для jQuery. Таким образом, если Вы пользуетесь другой библиотекой JavaScript, которая использует переменную $, можно столкнуться с конфликтами с jQuery. Чтобы избежать этих конфликтов, Вы должны поместить jQuery в режим без конфликтов сразу после того, как она загружается на страницу и прежде, чем Вы попытаетесь использовать jQuery в своей странице.

Помещение jQuery В Безконфликтный Режим

Когда Вы помещаете jQuery в режим без конфликтОВ, у Вас есть опция присвоения нового имени переменной, чтобы заменить $ псевдонимом.

<!-- Помещение jQuery в режим no-conflict. --> <script src="prototype.js"></script> <script src="jquery.js"></script> <script> var $j = jQuery.noConflict(); // $j теперь является псевдонимом функции jQuery; // создание нового псевдонима опционально. $j(document).ready(function() { $j( "div" ).hide(); }); // Переменная $ теперь имеет значение // прототипа, т.е. является ярлыком для // document.getElementById(). mainDiv ниже // является элементом DOM, а не объектом jQuery. window.onload = function() { var mainDiv = $( "main" ); }

В коде выше, $ вернется назад к своему значению в исходной библиотеке. Вы все еще будете в состоянии использовать полное имя функции jQuery, так же как и новый псевдоним $j в остальной части Вашего приложения. Новый псевдоним можно назвать как угодно, на Ваше усмотрение: jq, $J, awesomeQuery и т.д..

Наконец, если Вы не хотите определять другой вариант к полному имени функции jQuery (Вам действительно нравится использовать $ и не беспокоиться об использовании другой библиотеки с методом $), то есть и другой подход, который Вы могли бы попробовать: просто добавьте $ как параметр, который передается в Вашу функцию jQuery( document ).ready(). Это наиболее подходящий вариант в случае, когда Вы по-прежнему хотите извлечь преимущества их краткого кода jQuery, но не хотите вызвать конфликты с другими библиотеками.

<!-- Другой способ перевести jQuery в режим no-conflict. --> <script src="prototype.js"></script> <script src="jquery.js"></script> <script> jQuery.noConflict(); jQuery( document ).ready(function( $ ) { // Вы можете использовать $ в локальном // контексте как псевдоним для jQuery. $( "div" ).hide(); }); // Переменная $, доступная в глобальном // контексте, имеет значение prototype.js. window.onload = function(){ var mainDiv = $( "main" ); }

Это, вероятно, идеальное решение для большей части Вашего кода, если считать, что будет меньше кода, который необходимо изменить, чтобы достигнуть полной совместимости.

Включение jQuery Перед Другими Библиотеками

Фрагменты кода выше полагаются на jQuery, загружаемую после того, как prototype.js загружена. Если Вы включаете jQuery перед другими библиотеками, можно использовать jQuery когда Вы делаете некоторую работу с jQuery, но $ будет определять значение в другой библиотеке. Нет никакой потребности освобождать псевдоним $, вызывая jQuery.noConflict().

<!-- Загрузка jQuery перед другими библиотеками. --> <script src="jquery.js"></script> <script src="prototype.js"></script> <script> // Используйте полное имя функции jQuery для ссылки на jQuery. jQuery( document ).ready(function() { jQuery( "div" ).hide(); }); // Используйте переменную $ как определенную в prototype.js window.onload = function() { var mainDiv = $( "main" ); };

Далее: Сенсорные События jQuery Mobile

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)