¿Hay alguna diferencia entre llamar a event.stopImmediatePropagation()
y return false
dentro de un controlador de eventos?jquery: event.stopImmediatePropagation() vs return false
Respuesta
Sí, son diferentes.
return false
es básicamente lo mismo que llamar a ambos, event.stopPropagation()
y event.preventDefault()
.
Mientras event.stopImmediatePropagation()
es lo mismo que event.stopPropagation()
más prevención de otros controladores de eventos registrados en el mismo elemento a ser ejecutado. Por lo tanto, no evita la acción predeterminada para un evento, como seguir un enlace hecho clic.
En resumen:
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
funciona también en "normal" JavaScript caso manipuladores
event.stopPropagation()
y event.preventDefault()
trabaja también en "normal" de JavaScript controladores de eventos (en un navegador compatible W3C), mientras que event.stopImmediatePropagation()
es una extensión de jQuery (actualización: aparentemente es parte de DOM Level 3 Events specification).
Nota:return false
no evitar que el evento burbujeando en controladores de eventos "normales" (no jQuery) (ver this answer) (pero aún impide la acción por defecto).
Tal vez vale la pena leer:
Sí. event.stopImmediatePropagation() no permitirá llamar a ningún otro controlador para ese evento, independientemente de dónde estén enlazados. Devolver falso solo detiene los manejadores vinculados a otros elementos (es decir, no el mismo elemento que el manejador de eventos que trata con la llamada stopImmediatePropagation()) de recibir el evento.
Al volver false
se detendrá el burbujeo del evento, pero se desencadenarán otros eventos vinculados. Sin embargo, stopImmediatePropagation
impide que otros eventos vinculados se activen y deja de burbujear.
Código Ejemplo de esto en jsfiddle.mesa de tener gran concepto
@FelixKling de respuesta:
estoy publicando más explicó tabla:
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
Referencia: https://stackoverflow.com/a/5302939/2236219
Aquí está la demostración completa para return false
, preventDefault
, stopPropagation
y 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>
(también disponible en JSFiddle.)
La tabla de la manwal’s answer no es totalmente correcto.
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. ASP.NET OnClientClick = "return false;" no funciona
- 2. User.IsInRole return false
- 3. if (! This) {return false; }
- 4. isProviderEnabled (LocationManager.NETWORK_PROVIDER) return false
- 5. Python path.exists() return False
- 6. ¿Cuándo debería usar return false en la función jquery?
- 7. jQuery Mobile 'return false' en el envío del formulario
- 8. jQuery - Cancelar el formulario enviado (usando "return false"?)?
- 9. Javascript return false in if declaraciones
- 10. En solicitud HTTPS, Request.IsSecureConnection return false
- 11. Dictionary.ContainsKey return False, but a want True
- 12. File.mkdir o mkdirs return false - ¿Motivo?
- 13. rieles/rubí "y return false" sintaxis
- 14. HiddenInput (DisplayValue = false)] vs [ScaffoldColumn (false)]
- 15. Tratando con `return false` cuando se usa` eval`in JavaScript
- 16. Jquery POST Json return
- 17. Release Mode vs Debug = "false"
- 18. return from jquery ajax call
- 19. jQuery: Evento que burbujea y cómo "clic", "live.click", "stopPropagation" y "return false" funcionan juntos
- 20. return false on addEventListener submit aún envía el formulario?
- 21. jquery nodename return undefined
- 22. jquery ajax return: undefined
- 23. if..else vs if() {return}
- 24. return String vs Integer vs undefined vs null
- 25. jquery $ (this) .id return Indefinido
- 26. si vs si (x == false) en rubí
- 27. si (booleano == false) vs si (booleano!)
- 28. jQuery validación this.optional (element) always false
- 29. event.stopImmediatePropagation() no funciona en Chrome para Android
- 30. Jquery each - Stop loop y return object
+1, puedo decir stopPropagation medios de tope burbujeante - sí, prevenir defecto - no, prevenir mismos manipuladores de elementos - sin – Arjun
@Arjun: Sí .... permítanme añadir esto. –
+1 para proporcionar esta gran tabla de comparación –