thisjest elementem, $(this)jest obiektem jQuery zbudowanym z tego elementu
$(".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);
});
Głębsze spojrzenie
thisMDN jest zawarty w kontekście wykonania
Zakres odnosi się do bieżącego kontekstu wykonania ECMA . Aby zrozumieć this, ważne jest zrozumienie, w jaki sposób konteksty wykonania działają w JavaScript.
wiążą to konteksty wykonania
Kiedy kontrola wchodzi w kontekst wykonywania (wykonywany jest kod w tym zakresie), środowisko zmiennych jest konfigurowane (środowiska leksykalne i zmienne - zasadniczo tworzy to obszar do wprowadzania zmiennych, które były już dostępne, oraz obszar dla zmiennych lokalnych, które mają być przechowywane) i thisnastąpi wiązanie .
jQuery wiąże to
Konteksty wykonania tworzą logiczny stos. W rezultacie konteksty głębiej na stosie mają dostęp do poprzednich zmiennych, ale ich powiązania mogły zostać zmienione. Za każdym razem, gdy jQuery wywołuje funkcję zwrotną, zmienia to powiązanie za pomocą applyMDN .
callback.apply( obj[ i ] )//where obj[i] is the current element
Wynikiem wywołania applyjest to, że wewnątrz funkcji wywołania zwrotnego jQuery thisodnosi się do bieżącego elementu używanego przez funkcję wywołania zwrotnego.
Na przykład, w .each, pozwala na często używana funkcja wywołania zwrotnego .each(function(index,element){/*scope*/}). W tym zakresie this == elementjest to prawda.
Wywołania zwrotne jQuery używają funkcji Apply do wiązania funkcji wywoływanej z bieżącym elementem. Ten element pochodzi z tablicy elementów obiektu jQuery. Każdy zbudowany obiekt jQuery zawiera tablicę elementów, które pasują do selektora jQuery API, który został użyty do utworzenia instancji obiektu jQuery.
$(selector)wywołuje funkcję jQuery (pamiętaj, że $jest to odwołanie do jQuerycode:) window.jQuery = window.$ = jQuery;. Wewnętrznie funkcja jQuery tworzy obiekt funkcji. Chociaż może nie być to od razu oczywiste, korzystanie z $()wewnętrznych zastosowań new jQuery(). Częścią tego obiektu jQuery jest znalezienie wszystkich dopasowań selektora. Konstruktor akceptuje również ciągi i elementy HTML . Gdy przekazujesz thisdo konstruktora jQuery, przekazujesz bieżący element do zbudowania obiektu jQuery . Obiekt jQuery zawiera następnie tablicową strukturę elementów DOM pasujących do selektora (lub tylko pojedynczy element w przypadku this).
Po zbudowaniu obiektu jQuery interfejs API jQuery jest teraz widoczny. Wywołanie funkcji API jQuery spowoduje iterację wewnętrzną tej struktury podobnej do tablicy. Dla każdego elementu w tablicy wywołuje funkcję wywołania zwrotnego dla interfejsu API, wiążąc wywołania zwrotne thisz bieżącym elementem. To wywołanie można zobaczyć we fragmencie kodu powyżej, w którym objznajduje się struktura podobna do tablicy, i ijest iteratorem stosowanym do pozycji w tablicy bieżącego elementu.