Использование jQuery с другими JavaScript-библиотеками

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

Тем не менее существует одна опасность: по умолчанию jQuery использует "$" в качестве псевдонима для "jQuery"

Переопределение функции $

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

<html>
<head>
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
  jQuery.noConflict();

  // Использование jQuery с помощью метода jQuery(...)
  jQuery(document).ready(function(){
    jQuery("div").hide();
  });

  // Использование Prototype с помощью метода $(...)
  $('someid').hide();
</script>
</head>
<body></body>
</html>

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

<html>
<head>
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
  var $j = jQuery.noConflict();

  // Использование jQuery с помощью метода $j(...)
  $j(document).ready(function(){
    $j("div").hide();
  });

  // Использование Prototype с помощью метода $(...)
  $('someid').hide();
</script>
</head>
<body></body>
</html>

Вы можете определить альтернативное имя для основного метода jQuery (например, jq, $J — или любое другое, которое для вас приемлемо).

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

<html>
<head>
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
  jQuery.noConflict();

  // Нужно заключить весь код с использованием jQuery внутри события ready документа
  jQuery(document).ready(function($){
    $("div").hide();
  });

  // Использование Prototype с помощью метода $(...)
  $('someid').hide();
</script>
</head>
<body></body>
</html>

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