2011-09-08 10 views
9

Estoy buscando un complemento jQuery, que tiene una sola función. Después de configurar los valores predeterminados apropiados a través de un argumento del constructor de la función define un par de funciones de ayuda, y luego como la última parte devuelve una llamada a this.each(), así:¿Qué significa "return this.each()" en jQuery?

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

entiendo el uso de this.each() en la modificación de elementos de DOM coincidentes y demás, pero ¿qué logra la declaración de devolución? ¿Algún tipo de matriz de elementos DOM modificados, que luego pueden ser encadenados en otras llamadas?

He leído sobre esto cada uno en este sitio, pero no puedo entender qué hace el return aquí. Gracias por ayudar a aclarar esto.

Respuesta

7

Permite a quien llamar un plugin o un evento en un montón de elementos y luego aplicar ese mismo función o evento a todos de ellos

por lo que si:

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

Y si, digamos, .selector contiene 10 elementos, los 10 elementos obtendrían lo que myPlugin tiene.


la razón de volver que .each afirmación se debe a que los rendimientos .each() lo que se le dio y le permite encadenar múltiples funciones y plugins juntos en un elemento de jQuery.

Por ejemplo:

$('.selector').myPlugin().yourPlugin(); 
+0

Gracias a todos por las respuestas. Creo que lo que me confunde es tener 'return' y this.each() en la misma línea. Como equivalente, ¿podría llamar this.each (...) y luego al final de esa llamada de función, en la siguiente línea, escribir 'return this'? – larryq

+0

Después de haber escrito lo anterior, creo que veo lo que está sucediendo ahora. Tendría que guardar el resultado de esto cada uno (...) en una variable, que sería el objeto jQuery, y devolverlo al final del método. 'esto' en el contexto de esto. cada uno (...) se refiere al elemento DOM al que llamo la función en contra. – larryq

10

.each devuelve los elementos a los que se llamó, por lo que en este caso, es probable que mantenga la capacidad de los métodos para ser encadenados en ese selector. Eso significa que si el método del plugin se llama foo, usted debe ser capaz de hacer

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

Debido foo devuelve el resultado del .each que es básicamente $("mySelector").

esperanza que tenía sentido.

4

esto hace que sea posible mantener los objetos de la cadena, por lo que se puede llamar a los métodos de jQuery como este:

$("selector").css().mouseover().etc().blahblah(); 
2

Se devuelve el objeto JQuery qué método se llama en como se indica en la docs. Entonces puede llamar a otro método en el valor devuelto.

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

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

Ver method chaining y fluent interface