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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top