Método off
El método off permite desvincular un controlador
de eventos de un elemento. Para vincular un controlador
puede utilizar el método
off.
Sintaxis
Así eliminamos un controlador de eventos de un elemento,
como primer parámetro en forma de cadena
se pasa uno o varios eventos separados por
espacios, el segundo - pasamos un selector
filtrador adicional de descendientes dentro del elemento
(debe coincidir con el que pasamos en
el método on cuando adjuntamos
el controlador). Para eliminar todos los eventos delegados,
pase el valor '**'. El segundo parámetro
es opcional. El tercero pasamos la función controladora
(que adjuntamos), a la que se le pasa el objeto
de evento o pasamos false:
$(selector).off(eventos, [selector], función-controladora(objeto evento));
Puede utilizar el método off de otra manera,
entonces en el primer parámetro se pasa
un objeto JavaScript, donde las claves - tipo de evento, y
los valores - funciones controladoras, que añadimos al
elemento:
$(selector).off({'tipo evento': handler}, [selector]);
Podemos simplemente pasar un parámetro en forma
de objeto jQuery.Event:
$(selector).off(evento);
Si no pasamos parámetros al método, entonces desvincularemos del elemento todos los controladores adjuntos:
$(selector).off();
Ejemplo
Añadamos la función controladora
testFunc a los párrafos.
Pero inmediatamente eliminemos el controlador del
segundo párrafo, así el clic en el segundo párrafo no
llevará a nada (si comentamos la última
línea de código, veremos cómo el evento se activa
también al hacer clic en el segundo párrafo):
<p id="test1">click1</p>
<p id="test2">click2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // añadimos controlador
$('#test2').on('click', {text: 'bbb'}, testFunc); // añadimos controlador
$('#test2').off('click', testFunc); // eliminamos controlador