58 votes

jquery: event.stopImmediatePropagation () vs return false

Existe-t-il une différence entre appeler event.stopImmediatePropagation() et return false dans un gestionnaire d'événements?

150voto

Felix Kling Points 247451

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:

4voto

Mark Coleman Points 24469

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 .

0voto

Gail Terman Points 387

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X