Różnica między E. target a e. currentTarget
Nie rozumiem różnicy, obie wydają się takie same, ale chyba nie są.
Wszelkie przykłady, kiedy użyć jednego lub drugiego byłyby mile widziane.
10 answers
[10]} Ben ma całkowitą rację w swojej odpowiedzi - więc miej to, co mówi w umyśle. To, co ci zaraz powiem, nie jest pełnym wyjaśnieniem, ale to bardzo łatwy sposób na przypomnienie sobie, jak e.target
, e.currentTarget
Praca w odniesieniu do zdarzeń myszy i listy wyświetlanych:
e.target
= rzecz pod myszką (jak mówi ben... rzecz, która wywołuje zdarzenie).
e.currentTarget
= rzecz przed kropką... (patrz niżej)
Więc jeśli masz 10 przycisków wewnątrz klipu z nazwą instancji "btns" i do:
btns.addEventListener(MouseEvent.MOUSE_OVER, onOver);
// btns = the thing before the dot of an addEventListener call
function onOver(e:MouseEvent):void{
trace(e.target.name, e.currentTarget.name);
}
e.target
będzie jednym z 10 przycisków i e.currentTarget
będzie zawsze klipem "btns".
Warto zauważyć, że jeśli zmienisz MouseEvent na ROLL_OVER lub ustawisz właściwość btns.mouseChildren
NA false, e.target
i e.currentTarget
będą zawsze "btns".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-26 09:00:33
e.target
jest tym, co uruchamia dyspozytor zdarzeń, a e.currentTarget
jest tym, do czego przypisałeś słuchacza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-18 01:40:01
e.currentTarget
jest zawsze elementem zdarzenia jest rzeczywiście związane zrobić. {[1] } jest elementem, z którego zdarzenie pochodzi, więc e.target
może być potomkiem e.currentTarget
lub {[1] } może być = = = e.currentTarget
, w zależności od struktury znaczników.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-23 17:52:10
Lubię wizualne odpowiedzi.
Po kliknięciu #btn
wywoływane są dwie procedury obsługi zdarzeń, które wyświetlają to, co widzisz na zdjęciu.
Demo tutaj: https://jsfiddle.net/ujhe1key/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-22 01:26:14
Warto zwrócić uwagę na to wydarzenie.cel może być przydatny, na przykład, do użycia pojedynczego słuchacza do wyzwalania różnych działań. Załóżmy, że masz typowy sprite "menu" z 10 przyciskami w środku, więc zamiast robić:
menu.button1.addEventListener(MouseEvent.CLICK, doAction1);
menu.button2.addEventListener(MouseEvent.CLICK, doAction2);
etc...
Możesz po prostu zrobić:
menu.addEventListener(MouseEvent.CLICK, doAction);
I uruchamia inną akcję wewnątrz doaction (event) w zależności od zdarzenia.target (używając jego właściwości name, itp...)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-07 19:02:05
Podaj przykład:
var body = document.body,
btn = document.getElementById( 'id' );
body.addEventListener( 'click', function( event ) {
console.log( event.currentTarget === body );
console.log( event.target === btn );
}, false );
Po kliknięciu 'btn', pojawią się 'true' i 'true'!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-05 09:37:14
target is the element that triggered the event (e.g., the user clicked on)
currenttarget is the element that the event listener is attached to.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-14 11:50:14
E. currentTarget zawsze zwróci komponent, do którego zostanie dodany detektor zdarzeń.
Z drugiej strony, e.celem może być sam komponent lub dowolne bezpośrednie dziecko lub wnuk lub wnuk i tak dalej, kto otrzymał Zdarzenie. Innymi słowy, e.target zwraca komponent, który znajduje się na górze w hierarchii listy wyświetlanych I musi znajdować się w hierarchii podrzędnej lub sam komponent.
Jedno użycie może być, gdy masz kilka obrazów w płótnie i chcesz przeciągnąć obrazy wewnątrz komponentu, ale Canvas. Możesz dodać słuchacza na płótnie i w tym słuchaczu możesz napisać następujący kod, aby upewnić się, że płótno nie zostanie przeciągnięte.
function dragImageOnly(e:MouseEvent):void
{
if(e.target==e.currentTarget)
{
return;
}
else
{
Image(e.target).startDrag();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-14 06:21:42
- e.target to element, który np. klikasz
- e.currentTarget jest elementem z dodanym detektorem zdarzeń.
Jeśli klikniesz na element potomny przycisku, lepiej jest użyć currentTarget do wykrywania atrybutów przycisków, w CH czasami problem z użyciem e. target.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-29 11:53:15
E. currentTarget to element (rodzic), do którego jest rejestrowane zdarzenie, e.target to node(children), do którego wskazuje Zdarzenie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-18 11:31:25