sábado, 8 de noviembre de 2014

Eliminar un evento con la función unbind()

Ahora vamos a aprender a hacer el paso contrario, es decir, eliminar un evento previamente asignado a un elemento o varios elementos de la página. El procedimiento es bastante sencillo. Si invocamos a unbind() sin ningún parámetro, eliminamos todos los manejadores de eventos, de cualquier tipo de evento, de los objetos jQuery.

$("p").unbind();

Así hemos eliminado todos los eventos asociados con los párrafos de la página. Pero quizás una situación más habitual es que deseemos eliminar sólo los eventos de un tipo y para ello simplemente tenemos que indicar como parámetro ese tipo concreto de evento deseado.

$("p").unbind("click");


Esta sentencia provocará se descarten que todos los manejadores de eventos asociados al clic sobre los párrafos. Como se puede entender, sobre esos elementos no ocurrirá nada en el momento en que hagamos clic. 
Además, en el supuesto que otros scripts Javascript hayan definido algún manejador de evento clic sobre alguno de los elementos, unbind() también eliminará esos posibles eventos. Para no eliminar todos los manejadores de eventos de un tipo determinado podemos especificar la función que deseamos descartar en la lista de parámetros de la llamada a unbind(). Esto funcionaría en un esquema de código como el siguiente.

var funcionManejador = function(e) {
// cualquier código
}
$("p").bind('click', funcionManejador);
$("p").unbind('click', funcionManejador);

Siempre tendremos que colocar la función dentro de una variable, para poder referirnos a esa misma variable tanto al crear el evento con bind(), como al descartarlo con unbind().

No hay comentarios:

Publicar un comentario