Предупреждение конфликтов

jQuery.noConflict()

Освобождает переменную $, чтобы избежать конфликтов имен. Метод имеет один вариант использования:

jQuery.noConflict([removeAll]):object1.0

removeAll — необязательный параметр типа boolean, при значении true функция освободит все имена переменныых, занятые библиотекой jQuery. По умолчанию, равен false.

Многие другие javascript библиотеки, так же как и jQuery используют $ как имя переменной или функции. Однако, в случае jQuery, $ является синонимом (алиасом) идентификатора jQuery. Поэтому, при освобождении имени $ с помощью jQuery.noConflict() мы не теряем функциональности библиотеки jQuery, посколько можем использовать вместо него jQuery.

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  jQuery.noConflict();
  // Далее может следовать код с использованием $ других библиотек.
</script>


К сожалению, отключение идентификатора $ может привести к неправильной работе некоторых плагинов jQuery. Для этого случая существует следующий трюк:

jQuery.noConflict();
(function($){ 
    // здесь $ будет действовать как алиас jQuery
})(jQuery);
// здесь $ будет доступен для других библиотек

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

jQuery.noConflict();
jQuery(document).ready(function($) {
  // здесь $ будет действовать как алиас jQuery
});
// здесь $ будет доступен для других библиотек

Ссылки

Поисковые ключи:
  • устранение конфликтов имен
  • noConflict()
  • noconflict()
  • .noConflict()
  • jQuery.noConflict()
  • $.noConflict()