Почему мы должны использовать $.noConflict() в jQuery?
Я знаю, что мы используем $.noConflict() для преодоления других конфликтов плагинов. Например, если какой-то новый плагин использует символ $ в качестве переменной, он будет переопределен. Итак, мы используем как ниже
var $j=$.noConflict();
Но, у меня есть сомнения, мы можем заархивировать это, используя сам код ниже, тогда почему $.noConflict(); нужно?
var $j=$;
Спасибо заранее. Пожалуйста, объясните основные разные
2 ответа
Здесь вы получили подробную информацию о том, почему:
Многие библиотеки JavaScript используют $ как имя функции или переменной, так же как и jQuery. В случае с jQuery $ - это псевдоним для jQuery, поэтому все функции доступны без использования $. Если вам нужно использовать другую библиотеку JavaScript вместе с jQuery, верните управление $ back другой библиотеке с помощью вызова $.noConflict(). Старые ссылки на $ сохраняются во время инициализации jQuery; noConflict () просто восстанавливает их.
Это от jQuery, и есть еще больше информации: https://api.jquery.com/jquery.noconflict/
Обновить после комментария
Из кода jQuery https://code.jquery.com/jquery-1.10.2.js если вы ищете noConflict
ты найдешь
noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}
if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
},
Проще говоря: это проверяет, является ли глобальным $
или глобальный jQuery
уже был использован. В любом случае он вернет jQuery. Так что вы не можете просто сделать var $j=$;
причина $
может уже есть конфликты. noConflict()
это то, что вам нужно.
Если вам нужно использовать другую библиотеку JavaScript вместе с jQuery, верните управление $ back другой библиотеке с помощью вызова $.noConflict (). Этот метод особенно эффективен в сочетании со способностью метода .ready() создавать псевдоним объекта jQuery, поскольку при обратном вызове, передаваемом в .ready(), вы можете использовать $, если хотите, не опасаясь конфликтов позже.
Примеры использования noConflict по-разному
Введите 01 var j = jQuery.noConflict ();
// Do something with jQuery
j( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";
Тип 02
jQuery.noConflict();
(function( $ ) {
$(function() {
// More code using $ as alias to jQuery
});
})(jQuery);