this
jest 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
this
MDN 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 this
nastą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ą apply
MDN .
callback.apply( obj[ i ] )//where obj[i] is the current element
Wynikiem wywołania apply
jest to, że wewnątrz funkcji wywołania zwrotnego jQuery this
odnosi 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 == element
jest 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 jQuery
code:) 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 this
do 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 this
z bieżącym elementem. To wywołanie można zobaczyć we fragmencie kodu powyżej, w którym obj
znajduje się struktura podobna do tablicy, i i
jest iteratorem stosowanym do pozycji w tablicy bieżącego elementu.