jQuery: diferencias entre usar los eventos .click() y .on(‘click’)

Acabo de encontrar un articulo que me a parecido muy útil y claro, a la hora de usar estos eventos de jQuery y el porqué de usar uno en cada momento ya que en la documentacion oficial no es que este bien explicado del todo.

Cuando usar click

$("button.alert").click(function() {
    alert(1);
});

Con lo anterior, se crea de forma individual un manejador para cada elemento que coincide con el selector. Esto significa que:

  1. Muchos elementos que coincidan con el selector, crearan manejadores idénticos y esto incrementara el consumo de memoria
  2. Los elementos que se añaden de forma dinámica no tendrán manejador. Si nosotros crearemos nuevos ‘button’ con clase ‘alert’ en el evento click() estos no tendrán un manejador asociado, y por lo tanto no funcionara el evento asociado a esa acción sobre el elemento HTML button.

Cuando usar on

$("div#container").on('click', 'button.alert', function() {
    alert(1);
});

Con lo anterior, se asocia un manejador único para cada elemento que coincidan con el selector incluyendo los que se crean de forma dinámica.

Otro de los motivos es con el uso de eventos con namespace. Si añades un manejador con .on(‘click’, handler), normalmente lo eliminaras con .off(‘click’, handler), y obviamente esto solo funcionara si tienes una referencia a la función, para ello has de usar namespaces.

$("#element").on("click.someNamespace", function() { console.log("anonymous!"); });

Eliminar manejador con:

$("#element").off("click.someNamespace");

Me a parecido muy útil esta explicación, así que la comparto para todos.

Documentacion de referencia:

 

Anuncios

¡Hola developers!

He creado este blog para poner algunas de nuestras experiencias diarias con el Framework Symfony 2 y algunas de las soluciones que damos a nuestros problemas.

Como no soy experto certificado por SensioLabs en Symfony 2, algunas de las soluciones que ofrezco, pueden ser mejorables o hechas de otra forma, quizás mejor, seguro. Así que si tienes alguna sugerencia o comentario al respecto, sera bienvenido y de gran ayuda, tanto para nosotros como para la comunidad.

Espero que os sirvan de ayuda y que compartais en redes sociales para que este blog tenga vida.