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>