Y a-t-il une différence entre appeler event.stopImmediatePropagation()
et return false
dans un gestionnaire d'événements?jquery: event.stopImmediatePropagation() vs return false
Répondre
Oui, ils sont différents.
return false
est fondamentalement le même que d'appeler à la fois, event.stopPropagation()
et event.preventDefault()
.
Alors que event.stopImmediatePropagation()
est le même que event.stopPropagation()
, plus empêcher que d'autres gestionnaires d'événements enregistrés sur le même élément à exécuter. Cela n'empêche donc pas l'action par défaut pour un événement, par exemple suivre 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
fonctionne également dans les gestionnaires "normal" événement JavaScript
event.stopPropagation()
et event.preventDefault()
travaillent aussi dans des gestionnaires d'événements JavaScript "normal" (dans un navigateur compatible W3C), tandis que event.stopImmediatePropagation()
est une extension de jQuery (mise à jour: apparemment, il fait partie du DOM Level 3 Events specification).
Note:return false
ne empêcher l'événement de bouillonnement dans gestionnaires d'événements "normaux" (non jQuery) (voir this answer) (mais empêche toujours l'action par défaut).
lecture Peut-être vaut:
Oui. event.stopImmediatePropagation() ne permet pas d'appeler d'autres gestionnaires pour cet événement, quel que soit l'endroit où ils sont liés. Return false n'arrête que les gestionnaires liés à d'autres éléments (c.-à-d. Pas le même élément que le gestionnaire d'événements traitant l'appel stopImmediatePropagation()) de la réception de l'événement.
Renvoyer false
arrêtera le bouillonnement d'événement, mais d'autres événements liés se déclencheront. Cependant, stopImmediatePropagation
empêche les autres événements liés de se déclencher et arrête de bouillonner.
Code Exemple de ceci sur jsfiddle.
@FelixKling table réponse ayant grand concept:
Je posterai plus la table a expliqué:
stop | prevent | prevent |
bubbling | default action | event handlers |
Same Element | Parent Element
return false Yes Yes No No
preventDefault No Yes No No
stopPropagation Yes No No Yes
stopImmediatePropagation Yes No Yes No
Référence: https://stackoverflow.com/a/5302939/2236219
Voici la démo complète pour return false
, preventDefault
, stopPropagation
et stopImmediatePropagation
:
var kid = document.getElementsByTagName('button')[0];
var dad = document.getElementsByTagName('div')[0];
kid.addEventListener('click', function(e) {
console.log('kid here');
e.stopImmediatePropagation();
});
kid.addEventListener('click', function(e) {
console.log('neighbour kid here');
});
dad.addEventListener('click', function(e) {
console.log('dad here');
});
dad.addEventListener('click', function(e) {
console.log('neighbour dad here');
});
<div>
<button>press</button>
</div>
(également disponible sur JSFiddle.)
Le tableau manwal’s answer n'est pas tout à fait correcte.
stop | prevent | prevent
bubbling | default action | event handlers
| | Same Element | Parent Element
return false Yes Yes No No
preventDefault No Yes No No
stopPropagation Yes No No Yes
stopImmediatePropagation Yes No Yes **Yes**
- 1. jQuery return false; Breaks Checkbox
- 2. jquery, return false sur soumettre doesnt travail
- 3. jquery live return false sur A tags
- 4. return false/développement web javascript/jquery
- 5. jquery submit event et return false
- 6. return false de l'événement click jQuery
- 7. ASP.NET OnClientClick = "return false;" ne fonctionne pas
- 8. '[CLLocationManager headingAvailable]' return FALSE
- 9. SqlCeDataReader Read() return false
- 10. Python path.exists() return False
- 11. égal à return false
- 12. PHP strtotime return false
- 13. bindService avec aidl return false
- 14. rawQuery return retourne toujours false
- 15. Quand devrais-je utiliser return false dans la fonction jquery?
- 16. AJAX POST $ _FILES avec onclick = "return false;"
- 17. Qu'est-ce que "return false"? faire?
- 18. Mot de passe hash return false
- 19. mousedown sur scrollTop: return false - problème
- 20. Python pourquoi ne int ("0") return false
- 21. Requête Linq return true or false
- 22. pourquoi g_thread_supported return false dans ma machine
- 23. php si return == false echo quelque chose
- 24. Connectez-vous dans WebUser return FALSE
- 25. Javascript confirmer return false si annuler
- 26. Submit ne peut pas voir return false;
- 27. Linq return null sur « false » où clausule
- 28. JavaScript "return false" du gestionnaire onkeypress
- 29. Ajax.BeginForm show loadingElementId quand OnBegin return false
- 30. Javascript return false, alert ne fonctionne pas
+1, je peux dire stopPropagation signifie arrêt bouillonnement - oui, éviter par défaut - non, empêche même les gestionnaires d'éléments - pas – Arjun
@Arjun: Oui .... laissez-moi ajouter ceci. –
+1 pour avoir fourni cette grande table de comparaison –