В # 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...
})();
... но по какой-то причине более ранний пример более распространен, хотя и немного менее понятен. (Полагаю, это на несколько символов короче.)