Spec-Zone.ru › jQuery

jQuery.noConflict()

jQuery.noConflict( [removeAll ] )Возвращает: Объект

Описание: Освободить управление jQuery переменной $.

  • версия добавлена: 1.0jQuery.noConflict( [removeAll ] )

    • removeAll
      Тип: Булево
      Булево значение, указывающее, нужно ли удалить все переменные jQuery из глобальной области видимости (включая сам jQuery).

Многие JavaScript библиотеки используют $ в качестве имени функции или переменной, как и jQuery. В случае с jQuery, $ — это всего лишь псевдоним для jQuery, поэтому вся функциональность доступна без использования $. Если вам нужно использовать другую JavaScript библиотеку вместе с jQuery, верните контроль над $ другой библиотеке с вызовом $.noConflict(). Старые ссылки на $ сохраняются во время инициализации jQuery; noConflict() просто восстанавливает их.

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

<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
// Code that uses other library's $ can follow here.
</script>

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

<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
  // Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>

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

Примеры:

Привяжите исходный объект, на который ссылался $ к $.

jQuery.noConflict();
// Do something with jQuery
jQuery( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";

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

jQuery.noConflict();
(function( $ ) {
  $(function() {
    // More code using $ as alias to jQuery
  });
})(jQuery);
 
// Other code using $ as an alias to the other library

Создайте другой псевдоним вместо jQuery, чтобы использовать его в остальной части скрипта.

var j = jQuery.noConflict();
 
// Do something with jQuery
j( "div p" ).hide();
 
// Do something with another library's $()
$( "content" ).style.display = "none";

Полностью переместите jQuery в новое пространство имён в другой объект.

var dom = {};
dom.query = jQuery.noConflict( true );

Результат:

// Do something with the new jQuery
dom.query( "div p" ).hide();
 
// Do something with another library's $()
$( "content" ).style.display = "none";
 
// Do something with another version of jQuery
jQuery( "div > p" ).hide();

Загрузите две версии jQuery (не рекомендуется). Затем восстановите глобальные переменные jQuery первой загруженной версии jQuery.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.noConflict demo</title>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<div id="log">
  <h3>Before $.noConflict(true)</h3>
</div>
<script src="https://code.jquery.com/jquery-1.6.2.js"></script>
 
<script>
var $log = $( "#log" );
 
$log.append( "2nd loaded jQuery version ($): " + $.fn.jquery + "<br>" );
 
// Restore globally scoped jQuery variables to the first version loaded
// (the newer version)
 
jq162 = jQuery.noConflict( true );
 
$log.append( "<h3>After $.noConflict(true)</h3>" );
$log.append( "1st loaded jQuery version ($): " + $.fn.jquery + "<br>" );
$log.append( "2nd loaded jQuery version (jq162): " + jq162.fn.jquery + "<br>" );
</script>
 
</body>
</html>

Демо:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/jQuery.noConflict

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API