Обработка конфликтных ситуаций

Как вы уже знаете, функция jQuery() имеет псевдоним $(). В некоторых других библиотеках (например, в Prototype) также объявлена функция $(). Если использовать такие библиотеки одновременно, то возникнет конфликт имен. Библиотека jQuery позволяет избежать этого конфликта. Для этого необходимо вначале подключить конфликтную библиотеку, а затем библиотеку jQuery. Сразу после подключения следует вызвать функцию noConflict().

jQuery.noConflict();

В этом случае библиотека jQuery освободит функцию $() для использования другой библиотекой.

Если результат выполнения функции noConflict() присвоить какой-либо переменной, то ее имя можно использовать вместо функции $() (листинг 1.2).

Листинг 1.2. Обработка ситуации конфликта имен

<!doctype html>
<html>
<head>
<title>Обработка ситуации конфликта имен</title>
<meta charset="utf-8">
<script>
function $() {
   alert("Функция $() из другой библиотеки");
}
</script>
<script src="js/jquery.js"></script>
<script>
var jq = jQuery.noConflict();
</script>
</head>
<body>
<div id="div1"></div>
<script>
$(); // Вызов функции из другой библиотеки
jq("#div1").html("Пример использования библиотеки jQuery");
</script>
</body>
</html>

В этом примере мы присвоили результат выполнения функции noConflict() переменной jq. Теперь можно использовать это имя в качестве названия функции.

jq("#div1").html("Пример использования библиотеки jQuery");

Если результат нигде не сохранять, то обращение выглядит следующим образом.

jQuery("#div1").html("Пример использования библиотеки jQuery");

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

(function($) {
   $("#div1").html("Пример использования библиотеки jQuery");
})(jQuery);

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

jQuery(function($) {
   $("#div1").html("Пример использования библиотеки jQuery");
});
Предыдущая статья Все статьи Следующая статья