Вы также должны использовать jQuery.noconflict
.
Обычно, когда вы используете jQuery, он определяет глобальную функцию с именем $
.jQuery также запоминает предыдущее значение $
- подобно глобальной функции $
, определенной другой библиотекой.
Когда вы вызываете noconflict
, jQuery восстанавливает предыдущее (запомненное) значение $
.Но теперь вы не можете использовать $
для использования jQuery - вы можете использовать только имя функции jQuery
, но это более многословно.Вот где приходит код, который вы упоминаете в своем вопросе.
Этот код позволяет вам использовать $
для вызова jQuery в области действия анонимной функции, которую вы определяете, без необходимости заменять значение глобальной$
.Функции создают отдельную область видимости или пространство имен для своих локальных переменных и параметров.Код, который вы опубликовали, эквивалентен:
function init() {
var $ = window.jQuery;
// do stuff with $
}
init();
Общий ярлык для регистрации функции инициализации в качестве обратного вызова, который вызывается, когда DOM готов, передает его в качестве параметра $
:
$(function() {
// code
});
Чтобы избежать вложения двух анонимных функций, когда необходимо предотвратить конфликты библиотек, функция jQuery будет передавать себя в качестве параметра для этого обратного вызова, поэтому вы можете сделать это:
jQuery(function($) {
// $ is jQuery here
});