this
jest element $(this)
obiektem jQuery wykonane 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);
});
uzyskać dokładne
this
MDN jest zawarta w ramach wykonania
zakres odnosi się do obecnego Execution ContextECMA. Aby zrozumieć this
, ważne jest zrozumienie sposobu działania kontekstów wykonawczych w JavaScript.
konteksty wykonanie wiążą ten
Kiedy kontrola wchodzi do kontekstu wykonania (kod jest wykonywany w tym zakresie) środowisko dla zmiennych są setup (leksykalne i zmiennych środowiskach - w zasadzie to ustawia obszar zmiennych do enter, które były już dostępne, oraz obszar dla zmiennych lokalnych, które mają być przechowywane) i występuje wiązanie z this
.
jQuery wiąże ten
Execution konteksty tworzą logiczną stos. W rezultacie konteksty znajdujące się głębiej w 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ą, korzystając z apply
MDN .
callback.apply(obj[ i ])//where obj[i] is the current element
Wynikiem wywoływania apply
jest wewnątrz jQuery funkcji połączenia zwrotnego, this
odnosi się do aktualnego elementu wykorzystywane przez funkcję wywołania zwrotnego.
Na przykład w .each
, powszechnie używana funkcja wywołania zwrotnego pozwala na .each(function(index,element){/*scope*/})
. W tym zakresie prawdą jest this == element
.
Połączenia 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 skonstruowany obiekt jQuery zawiera tablicę elementów, które pasują do obiektu, który został użyty do utworzenia instancji obiektu jQuery.
wywołuje funkcję jQuery (pamiętaj, że $
jest odniesieniem do jQuery
, kod: window.jQuery = window.$ = jQuery;
). Wewnętrznie funkcja jQuery tworzy instancję obiektu funkcji. Tak więc, choć może nie być to oczywiste, użycie $()
wewnętrznie używa new jQuery()
. Częścią konstrukcji tego obiektu jQuery jest znalezienie wszystkich dopasowań selektora. Konstruktor zaakceptuje również ciągi html i elementy. Po przekazaniu this
do konstruktora jQuery, przekazujesz bieżący element dla obiektu jQuery, który ma być zbudowany z. Obiekt jQuery zawiera następnie strukturę tablicową elementów DOM zgodnych z selektorem (lub po prostu pojedynczy element w przypadku this
).
Po skonstruowaniu obiektu jQuery, interfejs API jQuery zostaje ujawniony. Kiedy wywoływana jest funkcja api jQuery, wewnętrznie iteruje ona nad tą strukturą podobną do tablicy. Dla każdej pozycji w tablicy wywołuje funkcję wywołania zwrotnego dla interfejsu API, wiążąc wywołanie zwrotne z bieżącym elementem. Wywołanie to można zobaczyć w fragmencie kodu powyżej, gdzie obj
jest strukturą podobną do tablicy, a i
jest iteratorem używanym dla pozycji w tablicy bieżącego elementu.
@Reigel, dlaczego to było chronione? OP zakwestionował i odgadł poprawną odpowiedź. – vol7ron
@Reigel: Myślę, że powinienem zapytać o to w meta, ale czy to wszystko jest wymagane do ochrony, czy nie wszystkie pytania powinny być * chronione * – vol7ron