Привет, я был занят, пытаясь вывести свои знания JQuery на новый уровень. Пока что я думаю, что понял все, но поскольку я рискнул перейти к более сложным учебникам. Я заметил несколько случаев, когда процедура JQuery была заключена в закрытие (см. ниже), однако меня смущает то, что она передает $ и возвращает JQuery. У меня вопрос почему? что я могу сделать с возвращенным JQuery?
Я был бы очень признателен за любой свет, который люди могут пролить на это для меня.
(function($){
$(document).ready(function(){
var arr = $.map($("LI"), function(item, index){
while (index < 3)
{
return $(item).html();
}
return null;
});
$(document.body).append("<span>The first three authors are: " +
arr.join(", ") + "</span>");
});
})(jQuery);
Заранее благодарю.
Роб
Это самовызывающаяся анонимная функция (безымянная функция, которая объявляется и немедленно выполняется), которая принимает один аргумент, который присваивается параметру $
. В качестве аргумента передается значение jQuery
, функция jQuery.
Это сделано для того, чтобы сокращение $
можно было использовать внутри области действия функции для обозначения jQuery. Поскольку весь код внутри функции находится в области действия функции, это хороший шаблон для себя, содержащий код и не загрязняющий глобальное пространство имен.
Это также хороший шаблон, позволяющий использовать сокращение $
для jQuery внутри функции — может быть так, что сокращение $
(window. $
) назначается что-то еще, что может случиться, если вы используете несколько библиотек на одной странице. Используя этот шаблон, вы по-прежнему можете использовать $
для ссылки на объект jQuery
в функции для удобства и лаконичности.
Если вы пишете плагин, используйте
(function($) {
//stuff that uses the jquery lib using $
})(jQuery);
Это эквивалентно
var __myf = function($) {
//stuff that uses the jquery lib using $
};
__myf(jQuery);
Если вы пишете код страницы, используйте
jQuery(function($) {
//stuff that uses the jquery lib using $
});
Здесь jQuery будет вызывать вашу функцию, когда он готов (когда документ загружен) и передаст себя в качестве первого аргумента вашей функции.