¿Manejo de eventos eventos jQuery unclick() y unbind()?
-
02-07-2019 - |
Pregunta
Quiero adjuntar un evento de clic a un elemento de botón y luego eliminarlo, pero no puedo hacer que los eventos unclick() o unbind() funcionen como se esperaba.En el código siguiente, el botón es de color "tostado" y el evento de clic funciona.
window.onload = init;
function init() {
$("#startButton").css('background-color', 'beige').click(process_click);
$("#startButton").css('background-color', 'tan').unclick();
}
¿Cómo puedo eliminar eventos de mis elementos?
Solución
No existe tal cosa como unclick()
.¿De dónde has sacado eso?
Puede eliminar controladores de eventos individuales de un elemento llamando a unbind:
$("#startButton").unbind("click", process_click);
Si desea eliminar todos los controladores, o utilizó una función anónima como controlador, puede omitir el segundo argumento para unbind()
:
$("#startButton").unbind("click");
Otros consejos
O podría tener una situación en la que desee desvincular la función de clic justo después de usarla, como tuve que hacer yo:
$('#selector').click(function(event){
alert(1);
$(this).unbind(event);
});
desvincularse es tu amigo.
$("#startButton").unbind('click')
¿Estás seguro de que quieres desvincularlo?¿Qué pasa si más adelante quieres unirlo una y otra vez?No me gusta la vinculación/desvinculación del manejo dinámico de eventos, ya que tienden a salirse de control cuando se llaman desde diferentes puntos de su código.
Es posible que desee considerar opciones alternativas:
- cambiar la propiedad "deshabilitada" del botón
- implemente su lógica dentro de la función "process_click"
Solo mis 2 centavos, no es una solución universal.