Jaka jest różnica między tymi trzema postaciami:
this
$this
$(this)
Jaka jest różnica między tymi trzema postaciami:
this
$this
$(this)
W typowym użytkowania będzie można je zobaczyć jak to (korzystanie $this
mogą ulec zmianie):
this
- Odnosi się do elementu DOM w przewodnika Aktualnie jesteś, ale może to być innym obiektem całkowicie w innych sytuacjach, ale zawsze jest to kontekst.$this
- Zwykle tworzona przez var $this = $(this)
buforowaną wersję jQuery w opakowaniu o większej wydajności (lub łańcuszku $(this)
, aby uzyskać to samo w wielu przypadkach).$(this)
- Zawarta w jQuery wersja elementu, dzięki czemu masz dostęp do all its methods (szczególnie te w $.fn
).this
jest przedmiotem, na którym metoda nazwano$this
jest źle nazwane zmienne bez szczególnego znaczenia$(this)
nazywa słabo nazwana funkcja $
z this
jako jedynym argumentemlol. krótki i czysty. lubię +1. –
Ich nazwy zmiennych zostały wybrane ... słabo. – PaulJWilliams
Nie zgadzam się na twoim # 2, jest to doskonale poprawna nazwa dokładnie tego, do czego była użyta, jest to jquery zawijana wersja 'tego' ... jak byś to nazwał? biorąc pod uwagę, że '$ var' dla obiektów jQuery jest powszechnie używaną konwencją? A dla # 3, jaki zamiennik sugerujesz? Istnieje powód, dla którego wybrało to kilka bibliotek (jQuery, MooTools, Prototype, Microsoft's ....). –
W kontekście jQuery "to" jest obiektem, na którym wywołano metodę. "$ this" jest rzeczywiście źle nazwaną zmienną bez specjalnego znaczenia. '$ (this)' przekazuje 'to' do jQuery, które zwróci obiekt jQuery skojarzony z czymkolwiek "to", o ile "to" jest obiektem DOM.
Twoje pytanie będzie lepiej obsługiwane z większym kontekstem.
Jednak zakładam, że pytasz o zmienne w kontekście wywołania zwrotnego zdarzenia elementu (na przykład click
).
this
jest kontekst swojej obsługi (zazwyczaj elementu DOM, w przypadku obsługi zdarzeń DOM)$this
jest zazwyczaj używany do przechowywania wynik $(this)
$(this)
zwraca obiekt jQuery, że opakowuje this
- więcej informacji na ten temat można znaleźć w artykule jQuery documentation.Rozszerzenie na co Dawid powiedział:
$this
jest zwykle używany, aby mieć kopię obiektu this
w bieżącym zakresie. Na przykład z var $this = this;
możesz użyć zmiennej $this
w dowolnym miejscu bieżącego zakresu i zawsze możesz odwoływać się do tego obiektu, który w przeciwnym razie zostałby zmieniony, jeśli po prostu zostałby wymieniony z this
...Ja osobiście lubię $this
konwencji nazewnictwa i wolą coś podobnego var parentScope
$(this)
jest funkcją (var $ = function(){}
) używany przez niektórych ram takich jak jQuery lub PrototypeJs. Powodem jest używany dlatego $
jest bardzo łatwy do pisania zamiast someLongFunctionName
i dlatego nazywa się zwykle wiele razy w kodzie łatwiej mają być jak najkrótsze
W przypadku jQuery handler:
this
- jest elementem DOM przypisany obsługi zdarzeń do$(this)
- jest obiektem jQuery tworzone z tha T elementu$this
- zwykle zmienną gospodarstwa wynik $(this)
Bardziej ogólnie:
to wewnątrz funkcji odnosi się do obiektu lub pierwotnej funkcji nazywa na. Gdy funkcja jest używana jako konstruktor, odnosi się ona do konstruowanego nowego obiektu. Poza każdą funkcją this
odnosi się do obiektu globalnego (window
w trybie nie ścisłym).
Możesz znaleźć good detailed explanation on MDN.
$ this to nazwa zmiennej. W nazwach zmiennych JavaScript można zaczynać od $
. Niektórzy lubią używać go jako przedrostek dla zmiennych zawierających obiekty jQuery:
var body = document.body; // no prefix for a plain DOM object
var $body = jQuery('body'); // prefix for the same object wrapped in jQuery
var $this = $(this);
$ (this) jest wywołanie funkcji, gdzie $
to nazwa funkcji, a this
jest jej argument:
var $ = alert;
$(this); // [object Window]
$
nie ma żadnego specjalnego znaczenia per se. Ale jQuery definiuje funkcję $()
jako skrót dla jQuery()
. W zależności od argumentów funkcja ta może wykonać many different things.
Zanim jQuery była sławna, pamiętam, że '$ this' używany jest do odniesienia do obiektu obiektu nadrzędnego, w rodzaju' var that'. Jednak widzę, jak jQuery fenomena mogła wpłynąć na jego znaczenie. –
Ta odpowiedź zakłada, że znajdujemy się w procedurze obsługi zdarzeń: Odpowiedź Alisey jest bardziej ogólna. – meouw
@meouw - Nie sądzę, że zakładam, że natychmiast ją odrzucę: "ale może to być inny obiekt całkowicie w innych sytuacjach". * Większość * czasu, w którym to widzisz, to miejsce, w którym się znajdujesz (jesteśmy przede wszystkim kierowani wydarzeniami), ale nie jedyne miejsce, oczywiście. –