cpp

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

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

jQuery.noConflict();

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

var jq = jQuery.noConflict(true);

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

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

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

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

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

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

jQuery('#div2').html('Вызов функции jQuery()');

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

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

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

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

Учебник по jQuery и AJAX
Учебник по jQuery и AJAX в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp