$(документ.)готова стенографировать


является следующим сокращением для $(document).ready?

(function($){

//some code

})(jQuery);

Я вижу, что этот шаблон используется много, но я не могу найти никаких ссылок на него. Если это стенография для $(document).ready(), есть ли какая-то особая причина, по которой это может не сработать? В моих тестах он, кажется, всегда срабатывает перед готовым событием.

8 217

8 ответов:

сокращение для $(document).ready(handler) и $(handler) (где handler функция). Смотрите здесь.

код в вашем вопросе не имеет ничего общего с .ready(). Скорее, это немедленно вызываемое выражение функции (IIFE) с объектом jQuery в качестве его аргумента. Его цель состоит в том, чтобы ограничить область действия по крайней мере $ переменная в свой собственный блок, чтобы он не вызывал конфликтов. Обычно вы видите шаблон, используемый плагинами jQuery, чтобы гарантировать, что $ == jQuery.

стенографии является:

$(function() {
    // Code here
});

правильная скоропись-это:

$(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 );

от http://docs.jquery.com/Plugins/Authoring

мульти-рамочная безопасная стенография для 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 переменные

Как насчет этого?

(function($) { 
   $(function() {
     // more code using $ as alias to jQuery
     // will be fired when document is ready
   });
})(jQuery);

еще более короткий вариант-использовать

$(()=>{

});

здесь $ означает jQuery и ()=>{} так называемые 'стрела' унаследовала this от закрытия. (Так что в this вы, вероятно,window вместо document.)