2010-09-03 9 views
55

¿Cuál es la diferencia fundamental entre el uso de $ (este) frente a este

$('.viewComments').click(function(ev){ 
    //returns the desired value 
    alert(this.getAttribute('id')); 

    //Gives an error sayin function is not defined 
    alert($(this).getAttribute('id')); 

    //returns the desired value 
    alert($(this).attr('id')); 
}); 

lo que pensaba era "$ (this)" contendrán todas las funciones que "este "tiene y más ... Pero ese no parece ser el caso.

¿Qué es exactamente $ (esto)? y

¿Cómo sé qué funciones están disponibles cuando lo estoy usando? (Sé que puedo obtenerlos a través de Firebug, pero me gustaría saber si hay alguna otra forma, algún documento puede ser)

+0

posible duplicado de [¿Por qué tengo que usar $ (this)] (http://stackoverflow.com/questions/3316113/why-do-i- have-to-use-this) – jAndy

Respuesta

123

this es el objeto DOM, mientras que $(this) es la envoltura jQuery alrededor mismo.

Al usar this, puede llamar a los métodos DOM en él, pero no a los métodos jQuery. Cuando usa $(this), puede llamar a los métodos jQuery, pero no a los métodos DOM.

+8

Muy claro y conciso, excelente respuesta. – Ender

+3

+1 por corrección y concisión –

+0

Entonces, ¿es más ventajoso o una mejor práctica usar $ (esto) sobre esto en mi código jquery? –

1

$ (este) es el objeto actual que se seleccionó usando un selector jQuery o evento adjunto al objeto.

así que si tiene $('#myelement').click(..... entonces $(this) se refiere al elemento que se hizo clic para que $(this).hide() lo oculte.

7

$ (this) - representan elemento DOM actual en cuyo caso se llama esta función

La palabra clave this - En esta JavaScript siempre se refiere al “dueño” de la función que estamos ejecutando, o más bien, al objeto que una función es un método de.

+0

Es útil notar que '$ (this)' representa el elemento DOM envuelto como un objeto jQuery * porque * y * cuando * 'this' se refiere al elemento DOM como un objeto DOM nativo –

0

en jQuery la notación $() es una abreviatura del selector jQuery, por lo que si dice $ (esto) le está pidiendo a jQuery que vuelva a seleccionar su objeto. Entonces usted tiene las funciones habituales de jQuery disponibles. "this" es el objeto seleccionado por la llamada jQuery externa.

3

En jQuery, esto se refiere al objeto DOM, y $(this) se refiere a la mismo objeto pero con los métodos jQuery agregados

no se puede llamar a this.each() porque cada uno no es un método DOM, es un método jquery

puede llamar $(this).each() PORQUE $(this) devuelve un objeto jQuery

Cuestiones relacionadas