En realidad jQuery es un envoltorio alrededor del DOM de JavaScript, que lo mejora y simplifica. muy brevemente los selectores de jQuery vuelven jQuery objeto/s, es decir
var jQueryResults = $("article"); //Contains all article elements in the DOM as JQuery objects
Sin embargo, la selección de elementos con Javascript Devuelve los elementos de HTML DOM es decir
var normalResults = document.getElementsByTagName("article");//Contains all article elements in the DOM as HTML objects
Los problemas surgen en el que los objetos DOM no proporcionan la misma funcionalidad que Los objetos JQuery proporcionan.
Aquí es un ejemplo suceso que ilustra la diferencia:
$('.changeColorHover').hover(function() {
this.attr("style", "color:red");
}); //Will not work as we are trying to call a JQuery method on a DOM object
Con lo anterior en mente el 'esto' palabra clave es un objeto DOM y por lo tanto se le requiere para convertirlo en un objeto jQuery con el fin para utilizar los métodos jQuery.
$('.changeColorHover').hover(function() {
$(this).attr("style", "color:red");
}); //Will work since we have first converted the DOM object to a JQuery object
En resumen, la palabra clave this, le permite acceder al objeto que llama el evento ya que esto le dará una referencia al objeto que ha producido el evento. Pero, este es un objeto DOM, no un objeto jQuery. Como resultado, ninguno de los métodos jQuery que quiera utilizar no estará disponible, a menos que lo convierta en un objeto jQuery.
sí lo hace, es un idiotipo de jquery –
@Matt: No hay jQuery en el código. Asignar 'this' a otra variable también es muy común en" JavaScript simple ". –
@Felix: es un complemento, lo que significa que se refiere a un objeto jquery. Hay (o solía ser) un idioma jquery para prefijar objetos jquery con $. por lo tanto, es una pregunta jquery. Si no fuera jquery, en lugar de $ this probablemente verías, eso, uno mismo, o algo más descriptivo de lo que esto realmente significa –