Kann mir bitte jemand anhand eines Beispiels den genauen Unterschied zwischen currentTarget
und target
Eigenschaft in Javascript-Ereignissen mitteilen und welche Eigenschaft in welchem Szenario verwendet wird?
javascript
Valli69
quelle
quelle
Antworten:
Grundsätzlich sprudeln Ereignisse standardmäßig, sodass der Unterschied zwischen beiden wie folgt ist:
target
ist das Element, das das Ereignis ausgelöst hat (z. B. der Benutzer hat darauf geklickt)currentTarget
ist das Element, an das der Ereignis-Listener angehängt ist.Eine einfache Erklärung finden Sie in diesem Blogbeitrag .
quelle
XMLHttpRequest
target
= Element, das das Ereignis ausgelöst hat.currentTarget
= Element, das den Ereignis-Listener hat.quelle
Minimal lauffähiges Beispiel
Wenn Sie auf klicken:
1
hört dann zu und hängt an das Ergebnis:weil in diesem Fall:
2
ist das Element, das das Ereignis ausgelöst hat1
ist das Element, das das Ereignis gehört hatWenn Sie auf klicken:
Stattdessen lautet das Ergebnis:
Getestet auf Chrom 71.
quelle
Wenn dies nicht klebt, versuchen Sie Folgendes:
Strom in
currentTarget
bezieht sich auf die Gegenwart. Es ist das jüngste Ziel, das das Ereignis erfasst hat, das von anderswoher aufgetaucht ist.quelle
Wenn Sie im obigen Code auf das P-Tag klicken, erhalten Sie drei Warnungen. Wenn Sie auf das div-Tag klicken, erhalten Sie zwei Warnungen und eine einzelne Warnung, wenn Sie auf das Formular-Tag klicken. Und jetzt sehen Sie den folgenden Code:
Hier ist event.target [Objekt HTMLParagraphElement] und event.curentTarget ist [Objekt HTMLDivElement]: Also
Hier haben wir auf das P-Tag geklickt, aber wir haben keinen Listener für P, sondern für das übergeordnete Element div.
quelle
event.target ist der Knoten, von dem das Ereignis stammt, d. h. Überall dort, wo Sie Ihren Ereignis-Listener platzieren (auf Absatz oder Spanne), bezieht sich event.target auf den Knoten (auf den der Benutzer geklickt hat).
event.currentTarget hingegen bezieht sich auf den Knoten, an den der Listener für aktuelle Ereignisse angehängt wurde. Dh. Wenn wir unseren Ereignis-Listener an den Absatzknoten angehängt haben, bezieht sich event.currentTarget auf Absatz, während event.target immer noch auf span verweist. Hinweis: Wenn wir auch einen Ereignis-Listener im Body haben, bezieht sich event.currentTarget für diesen Event-Listener auf body (dh das Ereignis, das als Eingabe für Event-Listener bereitgestellt wird, wird jedes Mal aktualisiert, wenn das Ereignis einen Knoten sprudelt).
quelle