stopPropagation
empêche l'événement de se propager dans la chaîne d'événements.
preventDefault
empêche l'action par défaut du navigateur sur cet événement.
Exemples
preventDefault
$("#but").click(function (event) {
event.preventDefault()
})
$("#foo").click(function () {
alert("parent click event fired!")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
<button id="but">button</button>
</div>
stopPropagation
$("#but").click(function (event) {
event.stopPropagation()
})
$("#foo").click(function () {
alert("parent click event fired!")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
<button id="but">button</button>
</div>
Avec stopPropagation
, seul le button
gestionnaire de clic de est appelé tandis que le div
gestionnaire de clic de ne se déclenche jamais.
Où, comme si vous l'utilisiez preventDefault
, seule l'action par défaut du navigateur est arrêtée mais le gestionnaire de clics de la div se déclenche toujours.
Voici quelques documents sur les propriétés et méthodes des événements DOM de MDN:
Pour IE9 et FF, vous pouvez simplement utiliser preventDefault & stopPropagation.
Pour prendre en charge IE8 et inférieur remplacer stopPropagation
par cancelBubble
et remplacer preventDefault
parreturnValue
event.stop
fonction ... Aussi bizarre que je ne l' ai jamais eu du mal avec ça. J'utilise beaucoup le bouillonnement. Merci pour l'exemple!cancelBubble
etreturnValue
sont les deux propriétés (devrait donc être ensemblecancelBubble = true;
), et quepreventDefault
etstopPropagation
sont des méthodes (donc devraient être appeléspreventDefault();
)stopDefault()
ne fonctionne pas de la même manière questopPropagation()
. Si l'action par défaut n'appelle pas laonclick
méthode, c'est quoi?Terminologie
De quirksmode.org :
Interface
Depuis w3.org , pour la capture d'événements :
Pour le bouillonnement d'événement :
Pour l' annulation de l'événement :
Exemples
Dans les exemples suivants, un clic sur l'hyperlien dans le navigateur Web déclenche le flux de l'événement (les écouteurs d'événements sont exécutés) et l'action par défaut de la cible de l'événement (un nouvel onglet est ouvert).
HTML:
JavaScript:
Exemple 1 : il en résulte la sortie
Exemple 2 : ajout
stopPropagation()
à la fonctionentraîne la sortie
L'écouteur d'événement a empêché toute propagation vers le bas et vers le haut de l'événement. Cependant, cela n'a pas empêché l'action par défaut (une nouvelle ouverture d'onglet).
Exemple 3 : ajout
stopPropagation()
à la fonctionou la fonction
entraîne la sortie
En effet, les deux écouteurs d'événements sont enregistrés sur la même cible d'événement. Les écouteurs d'événement ont empêché la propagation vers le haut de l'événement. Cependant, ils n'ont pas empêché l'action par défaut (une nouvelle ouverture d'onglet).
Exemple 4 : ajout
preventDefault()
à n'importe quelle fonction, par exempleempêche l'ouverture d'un nouvel onglet.
la source
retour faux;
return false;
fait 3 choses distinctes lorsque vous l'appelez:event.preventDefault()
- Il arrête le comportement par défaut des navigateurs.event.stopPropagation()
- Il empêche l'événement de propager (ou de «bouillonner») le DOM.Notez que ce comportement diffère des gestionnaires d'événements normaux (non jQuery), dans lesquels, notamment,
return false
n'empêche pas l'événement de se propager.preventDefault ();
preventDefault();
fait une chose: il arrête le comportement par défaut des navigateurs.Quand les utiliser?
Nous savons ce qu'ils font mais quand les utiliser? Cela dépend simplement de ce que vous voulez accomplir. Utilisez-le
preventDefault();
si vous voulez "juste" empêcher le comportement du navigateur par défaut. Utilisez return false; lorsque vous souhaitez empêcher le comportement du navigateur par défaut et empêcher l'événement de propager le DOM. Dans la plupart des situations où vous utiliseriez return false; ce que vous voulez vraimentpreventDefault()
.Exemples:
Essayons de comprendre avec des exemples:
Nous verrons l'exemple pur JAVASCRIPT
Exemple 1:
Exemple 2:
Exemple 3:
Exemple 4:
Exemple 5:
cas:
Voir les trois exemples.
J'espère que ces exemples sont clairs. Essayez d'exécuter tous ces exemples dans un fichier html pour voir comment ils fonctionnent.
la source
Ceci est la citation d' ici
Event.preventDefault
La méthode preventDefault empêche un événement d'exécuter sa fonctionnalité par défaut. Par exemple, vous utiliseriez preventDefault sur un élément A pour arrêter de cliquer sur cet élément de quitter la page actuelle:
Alors que la fonctionnalité par défaut de l'élément est maçonnée, l'événement continue de bouillonner le DOM.
Event.stopPropagation
La deuxième méthode, stopPropagation, permet à la fonctionnalité par défaut de l'événement de se produire mais empêche l'événement de se propager:
stopPropagation empêche efficacement les éléments parents de connaître un événement donné sur son enfant.
la source
Event.preventDefault - arrête le comportement par défaut du navigateur. Voici maintenant quel est le comportement par défaut du navigateur. Supposons que vous ayez une balise d'ancrage et qu'elle ait un attribut href et que cette balise d'ancrage soit imbriquée dans une balise div qui a un événement click. Le comportement par défaut de la balise d'ancrage est lorsque vous cliquez sur la balise d'ancrage dans laquelle il doit naviguer, mais ce que fait event.preventDefault, c'est qu'il arrête la navigation dans ce cas. Mais cela n'arrête jamais le bouillonnement de l'événement ou l'escalade de l'événement, c'est-à-dire
Le résultat sera
"l'élément a été cliqué"
"le conteneur a été cliqué"
Maintenant event.StopPropation, il arrête la propagation de l'événement ou l'escalade de l'événement. Maintenant avec l'exemple ci-dessus
Le résultat sera
"l'élément a été cliqué"
Pour plus d'informations, reportez-vous à ce lien https://codeplanet.io/preventdefault-vs-stoppropagation-vs-stopimmediatepropagation/
la source
event.preventDefault();
Empêche l'action par défaut d'un élément de se produire.event.stopPropagation();
Empêche l'événement de se propager dans l'arborescence DOM, empêchant les gestionnaires parents d'être notifiés de l'événement.Par exemple, s'il y a un lien avec une méthode de clic à l' intérieur d'un joint
DIV
ouFORM
qui a également une méthode de clic ci - joint, il empêchera leDIV
ouFORM
cliquez sur la méthode de mise à feu.la source
la source