Event.target

L’élément sur lequel l’événement s’est réellement produit, par ex. le bouton cliqué à l’intérieur d’une liste.

Renvoie
L’élément (ou un autre objet) à l’origine de l’événement.
Sur cette page

Exemple

#
JavaScript
const answers = document.querySelector('#answers')

answers.addEventListener('click', (event) => {
  console.log('target:', event.target)
  console.log('currentTarget:', event.currentTarget)
  console.log('Réponse choisie', event.target.textContent)
})

answers.children[1].click()
Console
target: <li>
currentTarget: <ul id="answers">
Réponse choisie B

La dernière ligne simule un clic sur la réponse B. Cliquez sur une autre réponse dans l’aperçu pour voir comment target change, alors que currentTarget reste le même.

Définition et utilisation

#

La propriété event.target indique l’élément à l’origine de l’événement, par exemple exactement le bouton ou l’élément de liste que l’utilisateur a cliqué. À côté, il y a event.currentTarget, c’est-à-dire l’élément auquel est attachée la fonction de gestion en cours d’exécution.

Cette différence compte, car la plupart des événements se propagent vers le haut de l’arbre (on parle de bouillonnement, ou bubbling) : cliquer sur un élément de liste déclenche aussi l’écouteur sur la liste elle-même, sur son parent, et ainsi de suite jusqu’à document. Vous pouvez donc attacher une seule fonction au parent et vérifier event.target, plutôt que d’ajouter un écouteur à chaque enfant. Cette technique s’appelle la délégation d’événements, et elle fonctionne aussi pour les éléments ajoutés plus tard.

event.target peut être un élément imbriqué plus profondément que prévu, par ex. une icône <span> à l’intérieur d’un bouton. C’est pourquoi, avec la délégation, on cherche généralement le bon élément avec event.target.closest(sélecteur).

Syntaxe

#
Syntaxe
event.target
event.currentTarget

Plus d’exemples

#
La délégation fonctionne pour les nouveaux éléments
JavaScript
const todo = document.querySelector('#todo')

todo.addEventListener('click', (event) => {
  if (event.target.tagName === 'LI') {
    event.target.classList.toggle('done')
    console.log(`${event.target.textContent}: ${event.target.className}`)
  }
})

const newItem = document.createElement('li')
newItem.textContent = 'Leçon 2'
todo.append(newItem)

newItem.click()
Console
Leçon 2: done
Un clic sur un élément imbriqué
JavaScript
document.addEventListener('click', (event) => {
  console.log(event.target)
  console.log(event.target.closest('.like'))
})

document.querySelector('.icon').click()
Console
<span class="icon">
<button id="like" class="like">

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Avec la délégation d’événements, utilisez event.target.closest(sélecteur), car le clic a pu atteindre un élément imbriqué, par ex. une icône dans un bouton.
  • Dans la fonction de gestion, event.currentTarget indique toujours l’élément auquel l’écouteur est attaché, et event.target l’élément réellement cliqué.
  • Dans les champs de formulaire, vous lirez la valeur saisie via event.target.value.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.