thisé o elemento, $(this)é o objeto jQuery construído com esse elemento
$(".class").each(function(){
//the iterations current html element
//the classic JavaScript API is exposed here (such as .innerHTML and .appendChild)
var HTMLElement = this;
//the current HTML element is passed to the jQuery constructor
//the jQuery API is exposed here (such as .html() and .append())
var jQueryObject = $(this);
});
Um olhar mais profundo
thisMDN está contido em um contexto de execução
O escopo refere-se ao atual ECMA do contexto de execução . Para entender this, é importante entender como os contextos de execução operam em JavaScript.
contextos de execução vinculam isso
Quando o controle entra em um contexto de execução (o código está sendo executado nesse escopo), o ambiente para variáveis é configurado (ambientes lexicais e variáveis - essencialmente, isso configura uma área para entrada de variáveis que já estavam acessíveis e uma área para variáveis locais a serem armazenada) e a ligação de thisocorre.
O jQuery liga isso
Os contextos de execução formam uma pilha lógica. O resultado é que contextos mais profundos na pilha têm acesso a variáveis anteriores, mas suas ligações podem ter sido alteradas. Toda vez que o jQuery chama uma função de retorno de chamada, ele altera essa ligação usando o applyMDN .
callback.apply( obj[ i ] )//where obj[i] is the current element
O resultado da chamada applyé que, dentro das funções de retorno de chamada do jQuery, thisrefere-se ao elemento atual que está sendo usado pela função de retorno de chamada.
Por exemplo, em .each, a função de retorno de chamada normalmente usada permite .each(function(index,element){/*scope*/}). Nesse escopo, this == elementé verdade.
Os retornos de chamada do jQuery usam a função apply para vincular a função que está sendo chamada com o elemento atual. Este elemento vem da matriz de elementos do objeto jQuery. Cada objeto jQuery construído contém uma matriz de elementos que correspondem à API jQuery do seletor usada para instanciar o objeto jQuery.
$(selector)chama a função jQuery (lembre-se de que $é uma referência a jQuery, code window.jQuery = window.$ = jQuery;:). Internamente, a função jQuery instancia um objeto de função. Portanto, embora possa não ser imediatamente óbvio, use $()internamente new jQuery(). Parte da construção desse objeto jQuery é encontrar todas as correspondências do seletor. O construtor também aceitará strings e elementos html . Quando você passa thispara o construtor jQuery, está passando o elemento atual para um objeto jQuery a ser construído . O objeto jQuery então contém uma estrutura de matriz dos elementos DOM que correspondem ao seletor (ou apenas o elemento único no caso de this).
Depois que o objeto jQuery é construído, a API do jQuery agora é exposta. Quando uma função API jQuery é chamada, ela itera internamente sobre essa estrutura semelhante a uma matriz. Para cada item da matriz, ele chama a função de retorno de chamada para a API, vinculando os retornos de chamada thisao elemento atual. Essa chamada pode ser vista no snippet de código acima, onde objestá a estrutura semelhante à matriz e ié o iterador usado para a posição na matriz do elemento atual.