Diferencia entre on() y live() o bind() en jQuery

jQuery ofrece varios controladores de eventos como on() , live() y bind() . Sin embargo, hay algunas diferencias menores que se analizan a continuación.

Método bind(): este método solo adjunta eventos a elementos que existen de antemano, es decir, el estado del documento inicializado antes de que se adjunten los eventos. Si se cumple la condición del selector para un evento posterior, bind() no funcionará en esa función. Tampoco funcionará en el caso de que la condición del selector se elimine del elemento.

  • Ejemplo:

    <!DOCTYPE html>
    <html>
    <head>
        <!-- CDN for jQuery -->
        <script src=
        </script>
    </head>
    <body>
        <div class="content">
            <p class="a">This is Statement 1.</p>
            <script>
                /* Here, the bind() works on elements 
                   initialized beforehand only */
                $(".a").bind("click",function(){
                    $(this).css("color","red"); 
                });
            </script>
            <p class="a">This is Statement 2.</p>
            <!-- click() method works on Statement 
                   1 but not on Statement 2. -->
        </div>
    </body>
    </html>                            
  • Salida:
    Antes de hacer clic en esas declaraciones:

    Después de hacer clic en esas declaraciones:

Método live(): este método adjunta eventos no solo a los elementos existentes, sino también a los que se agregarán en el futuro, pero no funcionará en el caso de que se elimine la condición del selector del elemento.

Nota: El método live() quedó obsoleto en la versión 1.7 de jQuery y se eliminó en la versión 1.9.

  • Ejemplo:

    <!DOCTYPE html>
    <html>
    <head>
        <!-- Old CDN for .live() to work in jQuery -->
        <script src=
        </script>
        </head>
    <body>
        <div class="content">
            <p class="a">This is Statement 1.</p>
            <script>
                /* live() method works for elements 
                   appended later as well */
                $(".a").live("click",function(){
                    $(this).css("color","red"); 
                });
            </script>
            <p class="a">This is Statement 2.</p>
            <!-- live() method works on both Statement 
                 1 and Statement 2. -->
        </div>
    </body>
    </html>                    
  • Salida:
    Antes de hacer clic en esas declaraciones:

    Después de hacer clic en esas declaraciones:

Método on(): este método adjunta eventos no solo a los elementos existentes, sino también a los que se agreguen en el futuro. La diferencia aquí entre la función on() y live() es que el método on() todavía es compatible y utiliza un patrón de sintaxis diferente, a diferencia de los dos métodos anteriores.

  • Ejemplo:

    <!DOCTYPE html>
    <html>
    <head>
        <!-- CDN for jQuery -->
        <script src=
        </script>
    </head>
    <body>
        <div class="content">
            <p class="a">This is Statement 1.</p>
            <script>
                /* Works on all elements within scope 
                   of the document */
                $(document).on("click",".a",function(){
                    $(this).css("color","red"); 
                });
            </script>
            <p class="a">This is Statement 2.</p>
            <!-- on() method works on both Statement
                 1 and Statement 2. -->
        </div>
    </body>
    </html>                                            
  • Salida:
    Antes de hacer clic en esas declaraciones:

    Después de hacer clic en esas declaraciones:

Diferencias resumidas para los métodos anteriores:

Propiedad unir() En Vivo() en()
Obsoleto No
Remoto No No
Alcance Elementos inicializados de antemano Para el enlace de eventos actuales y futuros Para el enlace de eventos actuales y futuros
Sintaxis: $([selector]).bind([evento],[función]); $([selector]).live([evento],[función]); $(documento).on([evento],[selector],[función]);

Publicación traducida automáticamente

Artículo escrito por devproductify 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 *