Existe-t-il une différence entre appeler event.stopImmediatePropagation()
et return false
dans un gestionnaire d'événements?
Réponses
Trop de publicités?Oui, ils sont différents.
return false
, est essentiellement le même que l'appel à la les deux, event.stopPropagation()
et event.preventDefault()
.
Alors qu' event.stopImmediatePropagation()
est le même que event.stopPropagation()
plus de prévenir les autres gestionnaires d'événements sur le même élément à être exécuté. Il n'empêche pas l'action par défaut pour un événement, comme à la suite d'un lien cliqué.
En bref:
stop | prevent | prevent "same element"
bubbling | default action | event handlers
return false Yes Yes No
preventDefault No Yes No
stopPropagation Yes No No
stopImmediatePropagation Yes No Yes
return false
travaille aussi dans le "normal" JavaScript gestionnaires d'événements
event.stopPropagation()
et event.preventDefault()
travaillent également dans la "normale" JavaScript gestionnaires d'événements (dans un navigateur compatible W3C), alors que l' event.stopImmediatePropagation()
est une extension de jQuery (mise à jour: apparemment, il fait partie des Événements DOM Niveau 3 de la spécification).
Remarque: return false
ne permet pas de prévenir les cas de remontée en "normal" (non-jQuery) les gestionnaires d'événements (voir cette réponse)(mais empêche encore l'action par défaut).
Peut-être la peine de lire:
Le renvoi de false
arrêtera la diffusion de l'événement, mais d'autres événements liés se déclencheront. Cependant, stopImmediatePropagation
empêche le déclenchement d'autres événements liés et arrête la formation de bulles.
Exemple de code sur jsfiddle .
Oui. event.stopImmediatePropagation () ne laissera aucun autre gestionnaire pour cet événement être appelé, quel que soit le lieu où ils sont liés. Renvoyer false empêche uniquement les gestionnaires liés à d'autres éléments (c.-à-d. De ne pas avoir le même élément que le gestionnaire d'événement traitant de l'appel stopImmediatePropagation ()) de recevoir l'événement.