2011-08-29 9 views
16

Estaba leyendo el http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery. Y se confundió con el uso de this en estos 2 segmentos de código.

 $(document).ready(function() { 
     $("#orderedlist").find("li").each(function(i) { 
     $(this).append(" BAM! " + i); 
     }); 
    }); 

    $(document).ready(function() { 
     // use this to reset several forms at once 
     $("#reset").click(function() { 
     $("form").each(function() { 
     this.reset(); 
     }); 
    }); 
    }); 

cuándo necesitamos $(this) y this? ¿Y cuál es la diferencia entre ellos? Gracias por adelantado.

+3

posible duplicado de [¿Cuál es la diferencia entre "esto", "$ this" y "$ (this)"?] (Http://stackoverflow.com/questions/3889570/what-is-the-difference- between-this-this-and-this) – user113716

+1

@patrick: No creo que sea un duplicado. Vale la pena responder por qué '$ (this)' es necesario en una parte de este código en particular, mientras que 'this' se necesita en una parte diferente. – Blazemonger

+1

@ mblase75: Bueno, supongo que no estoy de acuerdo. Esa respuesta, junto con lo que el tutorial ya explica, lo convierte en un duplicado. Leer las respuestas a la otra pregunta debería resolverlo. Desde el tutorial: * "Tenga en cuenta que en una función' .each() ',' this' se refiere al elemento real. "* – user113716

Respuesta

16

this se refiere al elemento DOM en sí; $(this) envuelve el elemento en un objeto jQuery.

En el primer ejemplo, necesita $(this) porque .append() es un método jQuery.

En el segundo ejemplo, reset() es un método JavaScript, por lo que no se necesita ningún jQuery wrapper.

7

this por sí solo es un objeto común.

$(this) toma this y agrega el envoltorio jQuery para que pueda usar los métodos jQuery con el objeto.

3

this se refiere a un objeto DOM. Entonces, reset() es una función de un objeto DOM de formulario. append() por otro lado es un método jQuery, por lo que debe ser invocado por un objeto jQuery, de ahí el $(this).

Cuando rodeas this con $, obtienes un objeto jQuery que representa ese objeto DOM.

2

En general, en jQuery, this habrá una instancia del elemento DOM en cuestión, y $(this) construye un objeto jQuery alrededor this que le da los métodos habituales de jQuery como each() y val().

1

solo necesita $ (esto) si lo está siguiendo con una función jquery en la misma línea de código.

ex: $(this).find(...); $(this).val(); etc 

o de lo contrario solo necesita this.

Cuestiones relacionadas