¿Por qué devolver this.each (function ()) en jQuery plugins?

Algunos de los tutoriales y ejemplos que he visto para desarrollar complementos jQuery tienden a regresar

this.each(function () { //Plugin code here }); 

al final de la función que ejemplifica el complemento, pero aún no he visto ningún razonamiento detrás de él, parece ser un estándar que todo el mundo sigue. ¿Alguien puede iluminarme en cuanto al razonamiento detrás de esta práctica?

Editar: para aclarar, mi pregunta no era acerca de por qué devolver esto, sino más bien por qué el plugin debería devolver this.each.

Cuando filtra elementos con un selector ( $('.myclass') ), puede coincidir con más de un elemento.
Con each , itera sobre todos los elementos coincidentes y su código se aplica a todos ellos.

jQuery admite “métodos encadenables”, lo que significa que la mayoría de las funciones de jQuery deberían devolver this . .each() devuelve this , y si quiere que $('selector').yourPlugin().css(...) funcione, debe return this .

Permítame mostrarle dos piezas de código “equivalentes” que podrían aclarar su pregunta:

Con jQuery “cada” función:

 (function($) { $.fn.mangle = function(options) { return this.each(function() { $(this).append(' - ' + $(this).data('x')); }); }; })(jQuery); 

Sin la función jQuery “each”:

 (function($) { $.fn.mangle = function(options) { var objs = this; for (var i=0; i 

Entonces, básicamente, each función se usa para aplicar algún código a todos los elementos contenidos en this objeto ( ya que generalmente se refiere a un grupo de elementos devueltos por un selector jQuery ) y devuelve la referencia a this ( ya que each función siempre devuelve esa referencia - para permitir llamadas de encadenamiento- )

Como nota al margen : el segundo enfoque ( - for bucle- ) es más rápido (especialmente en navegadores antiguos) que el anterior ( - each función- ).

Cuando escribes un complemento estás extendiendo el objeto jQuery, y como el objeto jQuery es una secuencia, devuelves this.each(function () { }); para que su complemento se ejecute para cada elemento de la secuencia.

En resumen, le permite aprovechar el encadenamiento, ya que devuelve todo lo que se ha hecho hasta ahora, por lo que el siguiente .anyMethod() puede actuar sobre los elementos modificados / modificados.

Además, eche un vistazo a estos enlaces y le brindarán mucha información sobre el desarrollo de los complementos de jQuery.

http://www.webresourcesdepot.com/jquery-plugin-development-10-tutorials-to-get-started/
http://www.learningjquery.com/2007/10/a-plugin-development-pattern
http://snook.ca/archives/javascript/jquery_plugin

Y aquí tienes una buena aplicación basada en web que te ayuda a iniciar tus complementos jQuery. http://starter.pixelgraphics.us/