Actualmente estoy trabajando en este tutorial: Comenzando con jQuery
Para los dos ejemplos a continuación:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Observe que en el primer ejemplo, usamos $(this)
para agregar texto dentro de cada li
elemento. En el segundo ejemplo usamosthis
directamente al restablecer el formulario.
$(this)
parece usarse mucho más a menudo que this
.
Supongo que en el primer ejemplo, $()
está convirtiendo cada li
elemento en un objeto jQuery que comprende la append()
función, mientras que en el segundo ejemplo reset()
se puede llamar directamente en el formulario.
Básicamente necesitamos $()
funciones especiales jQuery-only.
¿Es esto correcto?
javascript
jquery
this
Kevin Wu
fuente
fuente
Respuestas:
Sí, solo necesitas
$()
cuando estás usando jQuery. Si desea la ayuda de jQuery para hacer cosas DOM, solo tenga esto en cuenta.Básicamente, cada vez que recuperas un conjunto de elementos, jQuery lo convierte en un objeto jQuery . Si sabe que solo tiene un resultado, estará en el primer elemento.
Y así...
fuente
$(this)[0]
sobrethis
si son siempre los mismos?$(this)[0]
Solo lo estaba usando para ilustrar el concepto. :) yo utilizo$("#myDiv")[0]
másdocument.getElementById("myDiv")
sin embargo.$()
es la función constructora de jQuery.this
es una referencia al elemento DOM de invocación.Básicamente, in
$(this)
, solo está pasando elthis
in$()
como parámetro para que pueda llamar a los métodos y funciones de jQuery.fuente
Sí, necesita
$(this)
funciones jQuery, pero cuando desee acceder a los métodos básicos de JavaScript del elemento que no usa jQuery, puede usarlothis
.fuente
Cuando se usa
jQuery
, se recomienda usar$(this)
generalmente. Pero si conoce (debe aprender y conocer) la diferencia, a veces es más conveniente y más rápido usar solothis
. Por ejemplo:es más fácil y puro que
fuente
this
es el elemento,$(this)
es el objeto jQuery construido con ese elementoUna mirada más profunda
this
MDN está contenido en un contexto de ejecuciónEl alcance se refiere al contexto de ejecución actual ECMA . Para comprender
this
, es importante comprender la forma en que funcionan los contextos de ejecución en JavaScript.contextos de ejecución vinculan esto
Cuando el control ingresa en un contexto de ejecución (el código se está ejecutando en ese ámbito), se configura el entorno para las variables (Entornos léxicos y variables - esencialmente esto establece un área para que ingresen las variables que ya eran accesibles, y un área para que las variables locales sean almacenado), y se
this
produce la unión de .jQuery une esto
Los contextos de ejecución forman una pila lógica. El resultado es que los contextos más profundos en la pila tienen acceso a las variables anteriores, pero sus enlaces pueden haber sido alterados. Cada vez que jQuery llama a una función de devolución de llamada, altera el enlace mediante
apply
MDN .El resultado de la llamada
apply
es que dentro de las funciones de devolución de llamada jQuery, sethis
refiere al elemento actual que está utilizando la función de devolución de llamada.Por ejemplo, en
.each
, la función de devolución de llamada comúnmente utilizada permite.each(function(index,element){/*scope*/})
. En ese ámbito,this == element
es cierto.Las devoluciones de llamada de jQuery utilizan la función de aplicación para vincular la función que se llama con el elemento actual. Este elemento proviene de la matriz de elementos del objeto jQuery. Cada objeto jQuery construido contiene una matriz de elementos que coinciden con la API jQuery del selector que se utilizó para crear una instancia del objeto jQuery.
$(selector)
llama a la función jQuery (recuerde que$
es una referencia ajQuery
, código:)window.jQuery = window.$ = jQuery;
. Internamente, la función jQuery crea una instancia de un objeto de función. Entonces, si bien puede no ser inmediatamente obvio, el uso$()
interno lo utilizanew jQuery()
. Parte de la construcción de este objeto jQuery es encontrar todas las coincidencias del selector. El constructor también aceptará cadenas y elementos html . Cuando pasathis
al constructor jQuery, está pasando el elemento actual para que se construya un objeto jQuery . El objeto jQuery contiene una estructura tipo matriz de los elementos DOM que coinciden con el selector (o solo el elemento individual en el caso dethis
).Una vez que se construye el objeto jQuery, la API jQuery ahora está expuesta. Cuando se llama a una función jQuery api, iterará internamente sobre esta estructura tipo matriz. Para cada elemento de la matriz, llama a la función de devolución de llamada para la API, vinculando las devoluciones de llamada
this
al elemento actual. Esta llamada se puede ver en el fragmento de código anterior dondeobj
está la estructura tipo matriz, yi
es el iterador utilizado para la posición en la matriz del elemento actual.fuente
Sí, al usar
$(this)
, habilitó la funcionalidad jQuery para el objeto. Con solo usarlothis
, solo tiene una funcionalidad genérica de Javascript.fuente
this
hace referencia a un objeto javascript y se$(this)
utiliza para encapsular con jQuery.Ejemplo =>
fuente