Vamos a repasar las funciones de jQuery on() y off() para la asignación y eliminación de eventos a los diferentes elementos del DOM.
Desde la versión 1.7 de jQuery la función on() suple perfectamente a las similares funciones bind(), live() y delegate().
Lo mismo sucede con la función off(), suple a las funciones unbind(), die() and undelegate().
Vamos a ver la sintaxis de la función de jQuery extraída de su web oficial:
$(selector).on(evento, childSelector, parametros, funcion, mapeo)
Con on() podemos asignar eventos a los elementos del DOM. Os explico los parámetros de la función:
Ahora toca ver la sintaxis de la función opuesta a on() extraída de su web oficial:
$(selector).off(evento, selector2, funcion, map)
Con off() eliminanos las asignaciones de eventos realizados previamente los elementos del DOM con la función on(). Os explico los parámetros de la función:
Ahora vamos a ver en este primer ejemplo en funcionamiento la función on():
$(document).ready(function(){ $("#parrafo").on("click",function(){ alert('Has hecho click en el párrafo'); }); });
Os explico el código:
El código HTML del párrafo es el siguiente:
<p id="parrafo">Haz click en cualquier palabra de este párrafo</p>
Ahora vamos a ver en este segundo ejemplo la asignación de varios eventos a un único elemento:
$(document).ready(function(){ $("#elementocontrolado").on("dblclick change",function(){ alert('Función on() activada.'); }); });
Explico el código superior:
El código HTML del input de tipo number es el siguiente:
<p>Introduce la edad: <input id="elementocontrolado" type="number"></p>
Tercer ejemplo para ver en funcionamiento el mapeo de eventos:
$(document).ready(function(){ $("#elementocontrolado").on({ change:function(){alert('El input ha cambiado de valor');}, click:function(){alert('Has hecho click en el input');} }); });
Os explico el ejemplo:
El código HTML del input es idéntico al del ejemplo anterior.
Vamos a ver cómo podemos eliminar los eventos asignados con este código:
$("#elementocontrolado").off();
Vamos a ver cómo eliminar un determinado evento:
$("p").off("click",changeSize);
Para la detección, control o selección de elementos con jQuery os recomiendo leer este post: