Синтаксис функции jQuery $ - PullRequest
5 голосов
/ 02 июня 2011

В чем разница между следующими определениями функций?

1:

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

2

function($){
    //stuff here
}

Ответы [ 2 ]

9 голосов
/ 02 июня 2011

В # 1 ваша функция будет вызываться jQuery, когда DOM будет готов; передача функции в $() является ярлыком для $(document).ready(function() { ... }); ( подробности здесь ).

В # 2 вы определяете функцию, но не вызываете ее и не запрашиваете jQuery для ее вызова. (На самом деле, , как показано , это синтаксическая ошибка & mdash; вам нужно присвоить ее чему-либо или вызвать ее, чтобы она действовала без имени.) Ничто из того, что вы указали, не будет выполнено функция, вам придется вызывать ее самостоятельно.

На # 2 вы, вероятно, видели идиому:

(function($) {
    // ...code using `$` for jQuery here...
})(jQuery);

Это довольно стандартная вещь, которую вы делаете, когда хотите, чтобы код запускался немедленно (не ожидал готовности DOM), и вы хотите использовать $ в функции для ссылки на jQuery, но вы хотите быть совместимым с noConflict режим. Вы часто видите это в плагинах. Он определяет функцию, принимающую аргумент $, который shadows any $, определенный глобально, и затем немедленно вызывает эту функцию, передавая jQuery в качестве аргумента. Таким образом, даже если $ не отображается на jQuery в глобальном масштабе, это происходит внутри этой функции. Вы можете сделать то же самое, как это:

(function() {
    var $ = jQuery;
    // ...code using `$` for jQuery here...
})();

... но по какой-то причине более ранний пример более распространен, хотя и немного менее понятен. (Полагаю, это на несколько символов короче.)

3 голосов
/ 02 июня 2011
  1. Этот код вызывает функцию $ с анонимной функцией в качестве первого аргумента. Обычно он используется для выполнения каких-либо действий при загрузке страницы (или, лучше сказать, DOM готов). И да, это будет делать что-то, но только когда событие будет запущено.

  2. Этот код является просто объявлением анонимной функции с одним аргументом $. Часто вы можете найти такие функции в коде плагинов jQuery. Такая техника полезна для локального использования переменной $. Это немного улучшит производительность и поможет не загрязнять глобальный охват.

Таким образом, первый фрагмент выполнит какое-либо действие, а второй ничего не даст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...