что делает «return this.each ()» в jQuery? - PullRequest
9 голосов
/ 08 сентября 2011

Я смотрю на плагин jQuery, который имеет одну функцию. После установки соответствующих значений по умолчанию через аргумент конструктора функция определяет пару вспомогательных функций, а затем в качестве последней части возвращает вызов this.each (), например:

return this.each(function() {
 //long method defined here
});

Я понимаю использование this.each () при изменении соответствующих элементов DOM и тому подобного, но что выполняет оператор return? Какой-то массив модифицированных элементов DOM, которые затем могут быть связаны в другие вызовы?

Я читал об этом. Каждый на этом сайте, но я не могу понять, что здесь делает return. Спасибо за помощь в прояснении этого вопроса.

Ответы [ 5 ]

10 голосов
/ 08 сентября 2011

.each возвращает элементы, для которых он был вызван, поэтому в этом случае, вероятно, будет поддерживаться возможность цепочки методов для этого селектора.Это означает, что если метод плагина называется foo, вы сможете выполнить

$("mySelector").foo().show();

Поскольку foo вернул результат .each, который в основном равен $("mySelector").

Надеюсь, что это имело смысл.

7 голосов
/ 08 сентября 2011

Позволяет вызвать плагин или событие для группы элементов, а затем применить ту же функцию или событие к всем из них

Так что если вы сделаете:

$('.selector').myPlugin();

И если, скажем, .selector содержит 10 элементов, все 10 элементов получат все, что myPlugin сделает.


Причина возврата этого оператора .eachпотому что .each() возвращает то, что было дано, и позволяет объединить несколько функций и плагинов в один элемент jQuery.

Например:

$('.selector').myPlugin().yourPlugin();
5 голосов
/ 08 сентября 2011

делает функции связными

http://docs.jquery.com/Plugins/Authoring#Maintaining_Chainability

4 голосов
/ 08 сентября 2011

это позволяет сохранять цепочку объектов, поэтому вы можете вызывать методы jquery так:

2 голосов
/ 08 сентября 2011

Возвращает объект JQuery, метод которого вызывается, как указано в документах . Таким образом, вы можете вызвать другой метод для возвращаемого значения.

// without method chaining
myobject.a()
myobject.b()
myobject.c()

// with method chaining
myobject.a().b().c();

См. метод цепочки и свободный интерфейс

...