$ (документ). уже сокращенное
Является ли следующая стенограмма для $(document).ready
?
(function($){
//some code
})(jQuery);
Я вижу, что этот шаблон используется много, но я не могу найти ссылку на него. Если это сокращенно $(document).ready()
, есть ли какая-то особая причина, что это может не сработать? В моих тестах он всегда срабатывает перед событием.
Ответы
Ответ 1
Сокращение для $(document).ready(handler)
составляет $(handler)
(где handler
- функция). См. здесь.
Код в вашем вопросе не имеет отношения к .ready()
. Скорее, это мгновенное выражение функции (IIFE) с объектом jQuery в качестве аргумента. Его цель - ограничить область действия как минимум переменной $
ее собственным блоком, чтобы она не вызывала конфликтов. Обычно вы видите шаблон, используемый плагинами jQuery, чтобы гарантировать, что $ == jQuery
.
Ответ 2
Сокращение:
$(function() {
// Code here
});
Ответ 3
Правильная стенография:
$(function() {
// this behaves as if within document.ready
});
Код, который вы опубликовали...
(function($){
//some code
})(jQuery);
... создает анонимную функцию и выполняет ее немедленно, когда jQuery
передается как arg $
. Все это эффективно делает код внутри функции и выполняет ее как обычно, поскольку $
уже является псевдонимом для jQuery
.: D
Ответ 4
Это не сокращение для $(document).ready()
.
Введенный вами код помещает внутренний код и делает jQuery доступным как $
, не загрязняя глобальное пространство имен. Это можно использовать, если вы хотите использовать как прототип, так и jQuery на одной странице.
Документировано здесь: http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression
Ответ 5
Эти конкретные строки являются обычной оболочкой для плагинов jQuery:
"... чтобы убедиться, что ваш плагин не сталкивается с другими библиотеками, которые могут использовать знак доллара, рекомендуется использовать jQuery для функции самозапуска (закрытия), которая сопоставляет ее с знаком доллара, поэтому он не может быть перезаписан другой библиотекой в рамках ее выполнения."
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
От http://docs.jquery.com/Plugins/Authoring
Ответ 6
Скрытая безопасная сокращенная версия для нескольких фреймов:
jQuery(function($, undefined) {
// $ is guaranteed to be short for jQuery in this scope
// undefined is provided because it could have been overwritten elsewhere
});
Это связано с тем, что jQuery не является единственной структурой, которая использует переменные $
и undefined
Ответ 7
Как насчет этого?
(function($) {
$(function() {
// more code using $ as alias to jQuery
// will be fired when document is ready
});
})(jQuery);
Ответ 8
Кстати, еще один ярлык я использую все время (это в основном версия уже упомянутого)
$(myFunction()); //myFunction already defined elsewhere