$(документ.)готова стенографировать
является следующим сокращением для $(document).ready
?
(function($){
//some code
})(jQuery);
Я вижу, что этот шаблон используется много, но я не могу найти никаких ссылок на него. Если это стенография для $(document).ready()
, есть ли какая-то особая причина, по которой это может не сработать? В моих тестах он, кажется, всегда срабатывает перед готовым событием.
8 ответов:
сокращение для
$(document).ready(handler)
и$(handler)
(гдеhandler
функция). Смотрите здесь.код в вашем вопросе не имеет ничего общего с
.ready()
. Скорее, это немедленно вызываемое выражение функции (IIFE) с объектом jQuery в качестве его аргумента. Его цель состоит в том, чтобы ограничить область действия по крайней мере$
переменная в свой собственный блок, чтобы он не вызывал конфликтов. Обычно вы видите шаблон, используемый плагинами jQuery, чтобы гарантировать, что$ == jQuery
.
правильная скоропись-это:
$(function() { // this behaves as if within document.ready });
код, который вы выложили...
(function($){ //some code })(jQuery);
...создает анонимную функцию и тут же ее выполняет с
jQuery
передается в качестве аргумента$
. Все, что он эффективно делает, это берет код внутри функции и выполняет его как обычно, так как$
- это уже псевдонимjQuery
. : D
это не сокращение для
$(document).ready()
.код, который вы разместили, помещает внутренний код и делает jQuery доступным как
$
без загрязнения глобального пространства имен. Это можно использовать, если вы хотите использовать как прототип, так и jQuery на одной странице.документально здесь: http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression
эти конкретные строки являются обычной оболочкой для плагинов jQuery:
" ...чтобы убедиться, что ваш плагин не сталкивается с другими библиотеками, которые могут использовать знак доллара, рекомендуется передать jQuery в самоисполняющуюся функцию (закрытие), которая сопоставляет ее со знаком доллара, чтобы она не могла быть перезаписана другой библиотекой в области ее выполнения."
(function( $ ){ $.fn.myPlugin = function() { // Do your awesome plugin stuff here }; })( jQuery );
мульти-рамочная безопасная стенография для ready:
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
переменные