$ (документ). уже сокращенное

Является ли следующая стенограмма для $(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