Obecnie pracuję nad tym samouczkiem: Pierwsze kroki z jQuery
Dla dwóch poniższych przykładów:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Zauważ, że w pierwszym przykładzie dodaliśmy $(this)
tekst do każdego li
elementu. W drugim przykładzie używamy this
bezpośrednio podczas resetowania formularza.
$(this)
wydaje się być używany znacznie częściej niż this
.
Domyślam się, że w pierwszym przykładzie $()
jest przekształcenie każdego li
elementu w obiekt jQuery, który rozumie append()
funkcję, podczas gdy w drugim przykładzie reset()
można wywołać bezpośrednio w formularzu.
Zasadniczo potrzebujemy $()
specjalnych funkcji tylko dla jQuery.
Czy to jest poprawne?
javascript
jquery
this
Kevin Wu
źródło
źródło
Odpowiedzi:
Tak, potrzebujesz tylko
$()
podczas korzystania z jQuery. Jeśli potrzebujesz pomocy jQuery w robieniu DOM, pamiętaj o tym.Zasadniczo za każdym razem, gdy odzyskujesz zestaw elementów, jQuery zamienia go w obiekt jQuery . Jeśli wiesz, że masz tylko jeden wynik, będzie to pierwszy element.
I tak dalej...
źródło
$(this)[0]
ponadthis
jeśli są zawsze takie same?$(this)[0]
go zilustrować. :) Używam jednak$("#myDiv")[0]
ponaddocument.getElementById("myDiv")
.$()
jest funkcją konstruktora jQuery.this
jest odniesieniem do elementu DOM wywołania.Więc w zasadzie, w
$(this)
, jesteś po prostu przechodzącąthis
w$()
jako parametr tak, że można wywołać metody i funkcje jQuery.źródło
Tak, potrzebujesz
$(this)
funkcji jQuery, ale jeśli chcesz uzyskać dostęp do podstawowych metod javascript dla elementu, który nie używa jQuery, możesz po prostu użyćthis
.źródło
Podczas korzystania
jQuery
zaleca się$(this)
zwykle używać . Ale jeśli znasz (powinieneś nauczyć się i znać) różnicę, czasami jest to wygodniejsze i szybsze w użyciuthis
. Na przykład:jest łatwiejsze i czystsze niż
źródło
this
jest elementem,$(this)
jest obiektem jQuery zbudowanym z tego elementuGłębsze spojrzenie
this
MDN jest zawarty w kontekście wykonaniaZakres 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 .Wynikiem wywołania
apply
jest to, że wewnątrz funkcji wywołania zwrotnego jQuerythis
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 zakresiethis == 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 dojQuery
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 przekazujeszthis
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 przypadkuthis
).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órymobj
znajduje się struktura podobna do tablicy, ii
jest iteratorem stosowanym do pozycji w tablicy bieżącego elementu.źródło
Tak, używając
$(this)
, włączyłeś funkcję jQuery dla obiektu. Wystarczy użyćthis
, ma tylko ogólną funkcjonalność Javascript.źródło
this
odwołuje się do obiektu javascript i$(this)
służy do enkapsulacji za pomocą jQuery.Przykład =>
źródło