Diferencia entre stopPropagation vs stopImmediatePropagation en JavaScript

Un evento se propaga o burbujea hasta el nivel de objeto de la ventana cada vez que se llama a un evento registrado. Por ejemplo, consideremos un elemento div principal («Div principal») que contiene otro elemento div secundario («Div secundario»), y para ambos, se registra un evento de clic. Si se hace clic en child div, el evento se disparará en todos los lugares, es decir, en los objetos padre e hijo.
Método de evento StopPropagation(): evita la propagación de cualquier controlador en la jerarquía DOM de nivel superior para ejecutar. Evita que el evento de clic se propague a los elementos principales.
Ejemplo:En este método, después de hacer clic en el elemento <div>, se producirá el primer controlador de eventos y luego no pasará nada. Si hace clic en el elemento <p>, se producirá el segundo y el primer controlador de eventos porque el elemento <p> está dentro del elemento <div>, pero si hace clic en el elemento <span>, solo se producirá el tercer controlador de eventos, lo que provocará el evento StopPropagation() El método evita que el evento se propague a los elementos principales. 
 

HTML

<!DOCTYPE html>
<html>
 
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
    </script>
 
    <script>
        $(document).ready(function() {
            $("span").click(function(event) {
                event.stopPropagation();
                alert("The span element was clicked.");
            });
 
            $("p").click(function(event) {
                alert("The p element was clicked.");
            });
 
            $("div").click(function() {
                alert("The div element was clicked.");
            });
        });
    </script>
 
    <style>
        div {
            height: 120px;
            width: 300px;
            padding: 10px;
            margin: 50px;
            border: 2px solid black;
            background-color: purple;
        }
        p {
            background-color: orange;
        }
        span {
            background-color: cyan;
        }
    </style>
</head>
 
<body>
    <center>
        <div>
            <h1 style="color:lightgreen;">
                GeeskforGeeks
            </h1>
             
             
<p>
                Acomputer Science Portal for Geeks<br>
                <span>Click on this span element.</span>
            </p>
 
        </div>
 
         
<p>
            event.stopPropagation() stops the click event
            from bubbling to the parent elements.
        </p>
 
    </center>
</body>
 
</html>

Producción: 
 

  • Antes de hacer clic en el elemento: 
     

  • Después de hacer clic en el elemento <div>: 
     

stopPropagation

  • Después de hacer clic en el elemento <p>: 
     

stopPropagation

  •  

stopPropagation

  • Después de hacer clic en el elemento <span>: 
     

stopPropagation

Método de evento StopImmediatePropagation(): evita la propagación de cualquier otro controlador y aquellos en la jerarquía DOM de nivel superior. Detiene los otros eventos que fueron asignados después de este evento.
Ejemplo: el evento StopImmediatePropagation() detiene el siguiente evento. 
 

HTML

<!DOCTYPE html>
<html>
 
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
    </script>
     
    <script>
        $(document).ready(function() {
            $("div").click(function(event) {
                alert("'Event handler 1' executed");
                event.stopImmediatePropagation();
            });
             
            $("div").click(function(event) {
                alert("'Event handler 2' executed");
            });
             
            $("div").click(function(event) {
                alert("'Event handler 3' executed");
            });
        });
    </script>
     
    <style>
        div {
            height: 100px;
            width: 300px;
            padding: 10px;
            margin: 50px;
            border: 2px solid black;
            background-color: purple;
        }
    </style>
</head>
 
<body>
    <center>
        <div>
            <h1 style="color:lightgreen;">
                GeeskforGeeks
            </h1>
            Click on this div element.
        </div>
 
         
<p>
            event.stopImmediatePropagation() stop
            the second and third event.
        </p>
 
    </center>
</body>
 
</html>

Producción: 
 

  • Antes de hacer clic en el elemento div: 
     

stopImmediatePropagation

  • Después de hacer clic en el elemento div: 
     

stopImmediatePropagation

stopPropagation vs stopImmediatePropagation 
 

detener la propagación stopImmediatePropagation
Permitirá que se ejecuten otros controladores en el mismo elemento, evitará que se ejecuten controladores en elementos principales. Evitará que se ejecuten todos los eventos.
Permitirá ejecutar más de un controlador uno por uno. Dependerá de dónde haya usado esto, ese controlador será el último en ejecutarse.
Si crea una tabla que contiene <table>, <tr> y <td>. Si configura tres controladores de eventos para <td>, entonces otros dos controladores de eventos también se ejecutarán con este. Pero en este caso, si hace lo mismo, los otros dos controladores de eventos no se ejecutarán.

Publicación traducida automáticamente

Artículo escrito por MbonigabaAlliance y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *