Domanda

Voglio collegare un evento click a un elemento pulsante e successivamente rimuoverlo, ma non riesco a far funzionare gli eventi unclick () o unbind () come previsto. Nel codice seguente, il pulsante è di colore "marrone chiaro" e l'evento click funziona.

window.onload = init; 
function init() {
    $("#startButton").css('background-color', 'beige').click(process_click);
    $("#startButton").css('background-color', 'tan').unclick();
}

Come posso rimuovere eventi dai miei elementi?

È stato utile?

Soluzione

Non esiste qualcosa come unclick () . Da dove l'hai preso?

Puoi rimuovere singoli gestori di eventi da un elemento chiamando unbind:

$("#startButton").unbind("click", process_click);

Se vuoi rimuovere tutti i gestori o hai usato una funzione anonima come gestore, puoi omettere il secondo argomento in unbind () :

$("#startButton").unbind("click");

Altri suggerimenti

O potresti avere una situazione in cui vuoi sciogliere la funzione clic subito dopo averla usata, come dovevo:

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});

unbind è tuo amico.

$("#startButton").unbind('click')

Sei sicuro di voler scioglierlo? Che cosa succede se in seguito vuoi rilegarlo ancora e ancora e ancora? Non mi piace il bind / unbind dinamico di gestione degli eventi, poiché tendono a sfuggire di mano, quando vengono chiamati da punti diversi del tuo codice.

Potresti prendere in considerazione opzioni alternative:

  • cambia il pulsante " disabilitato " Proprietà
  • implementa la tua logica all'interno di " process_click " la funzione

Solo i miei 2 centesimi, non una soluzione universale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top