Nie rozumiem różnicy, oba wydają się takie same, ale chyba nie są.
Docenione zostaną wszelkie przykłady użycia jednego lub drugiego.
actionscript-3
events
event-handling
Artemix
źródło
źródło
Odpowiedzi:
Ben ma całkowitą rację w swojej odpowiedzi - pamiętaj więc o tym, co mówi. Co mam powiedzieć, nie jest to pełne wyjaśnienie, ale jest to bardzo łatwy sposób na zapamiętanie jak
e.target
,e.currentTarget
praca w odniesieniu do zdarzeń myszy i listy wyświetlania:e.target
= Rzecz pod myszą (jak mówi Ben ... rzecz, która wyzwala zdarzenie).e.currentTarget
= Rzecz przed kropką ... (patrz poniżej)Jeśli więc masz 10 przycisków w klipie o nazwie instancji „btns” i wykonujesz:
e.target
będzie jednym z 10 przycisków ie.currentTarget
zawsze będzie klipem „btns”.Warto zauważyć, że jeśli zmieniłeś MouseEvent na ROLL_OVER lub ustawiłeś właściwość
btns.mouseChildren
na false,e.target
ie.currentTarget
oba będą zawsze „btns”.źródło
currentTarget
zawsze obiekt nasłuchuje zdarzenia;target
to rzeczywisty cel, który otrzymał zdarzenie. Podczas propagacji zdarzenia cel odbiera zdarzenie i bąbelkuje listę wyświetlania. (Lub odwrotnie do przechwytywania zdarzeń)e.target
wyzwala wyzwalacz dyspozytora zdarzeń ie.currentTarget
przypisuje się go do odbiornika.źródło
e.currentTarget
jest zawsze elementem, do którego faktycznie przypisane jest zdarzenie.e.target
jest elementem, z którego pochodzi wydarzenie, więce.target
może być potomkieme.currentTarget
lube.target
może być ===e.currentTarget
, w zależności od struktury znaczników.źródło
Lubię wizualne odpowiedzi.
Po kliknięciu
#btn
wywoływane są dwa moduły obsługi zdarzeń, które wyświetlają to, co widać na obrazku.Demo tutaj: https://jsfiddle.net/ujhe1key/
źródło
Warto zauważyć, że event.target może być przydatny, na przykład, do używania jednego detektora do wyzwalania różnych akcji. Załóżmy, że masz typową ikonkę „menu” z 10 przyciskami w środku, więc zamiast robić:
Możesz po prostu zrobić:
I uruchom inną akcję w ramach doAction (event) w zależności od event.target (używając jego właściwości name itp.)
źródło
zrób przykład:
kiedy klikniesz „btn”, pojawią się „prawda” i „prawda”!
źródło
e.currentTarget zawsze zwraca komponent, do którego dodawany jest detektor zdarzeń.
Z drugiej strony e.target może być samym komponentem lub dowolnym bezpośrednim dzieckiem, wnukiem lub wnukiem itd., Który otrzymał to wydarzenie. Innymi słowy, e.target zwraca komponent znajdujący się na górze w hierarchii listy wyświetlania i musi znajdować się w hierarchii potomnej lub samym komponencie.
Jednym z zastosowań może być, gdy masz kilka obrazów w kanwie i chcesz przeciągnąć obrazy do komponentu oprócz kanwy. Możesz dodać detektor do Canvas, aw tym detektorze możesz napisać następujący kod, aby upewnić się, że Canvas nie zostanie przeciągnięty.
źródło
źródło
Jeśli klikniesz element potomny przycisku, lepiej użyć currentTarget do wykrycia atrybutów przycisków, w CH czasami problem z użyciem e.target.
źródło
e.currentTarget to element (element nadrzędny), w którym rejestrowane jest zdarzenie, e.target to węzeł (elementy podrzędne), na który wskazuje zdarzenie.
źródło