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

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

(function($){

//some code

})(jQuery);

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

 Timo Huovinen16 дек. 2013 г., 13:42
Любая переменная, определенная внутри упомянутой функции шаблона (например,var somevar;) не будет изменять содержимое переменных с тем же именем вне функции
 AsksAnyway22 мар. 2014 г., 19:56
Код обеспечивает то, что $ представляет jQuery в этом функциональном блоке, поэтому код переносим в места, где $ alias для jQuery отключен или определен как что-то еще.

Ответы на вопрос(8)

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 переменные

 Mike Causer20 янв. 2015 г., 06:48
также может быть написано как(function($){ ... })(jQuery);
 Timo Huovinen20 янв. 2015 г., 08:45
@MikeCauser также хороший подход, но он не будет вызванreadyвместо этого он вызывается сразу

«... чтобы убедиться, что ваш плагин не конфликтует с другими библиотеками, которые могут использовать знак доллара, лучше всего передавать jQuery самовыполняющейся функции (замыкание), которая отображает его на знак доллара, чтобы он мог» не может быть перезаписано другой библиотекой в ​​объеме ее выполнения. "

(function( $ ){
  $.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
  };
})( jQuery );

Изhttp://docs.jquery.com/Plugins/Authoring

Правильное сокращение это:

$(function() {
    // this behaves as if within document.ready
});

Код, который вы разместили ...

(function($){

//some code

})(jQuery);

... создает анонимную функцию и выполняет ее немедленно сjQuery передается в качестве аргумента$, Все, что он делает, - это берет код внутри функции и выполняет его как обычно, так как$ это уже псевдоним дляjQuery, : D

 Jim Wolff04 янв. 2017 г., 10:51
Можно сказать, что он также гарантирует, что $ является псевдонимом для jQuery, если загружены другие инструменты, которые также используют $ в качестве псевдонима.
Решение Вопроса

$(document).ready(handler) является$(handler) (гдеhandler это функция). ВидетьВот.

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

 jtheletter22 окт. 2014 г., 21:36
технически этосразу вызывается функция выражения, Если бы он вызывал себя сам, он вызывал бы себя изнутри. Поиск в Интернете дляiifeили перейдите кЗнаменитый пост ковбоя Алмана, Подробнее ... Sheesh.

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

$(()=>{

});

где$ выступает за JQuery и()=>{} так называется«функция стрелки» что наследуетthis от закрытия. (Так что вthis вы, вероятно, будете иметьwindow вместоdocument.)

$(document).ready().

Код, который вы опубликовали, содержит внутренний код и делает jQuery доступным как$ без загрязнения глобального пространства имен. Это можно использовать, когда вы хотите использовать как прототип, так и jQuery на одной странице.

Документировано здесь:http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression

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

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

Сокращение:

$(function() {
    // Code here
});
 Nugsson30 нояб. 2018 г., 15:22
Я до сих пор посещаю этот ответ раз в месяц или около того.
 Raynos14 мая 2011 г., 21:21
Просто полезно знать, что ты получаешь$ бесплатно в качестве первого аргумента.
 Kyle Trauberman14 мая 2011 г., 21:10
@raynos Это не обязательно. приведенный выше код отлично работает как псевдоним для$(document).ready(function(){ });
 Raynos14 мая 2011 г., 21:06
Первый аргумент$, Могу добавить это. Это полезно дляjQuery(function($, undefined) {});

Ваш ответ на вопрос