Gestione degli eventi jQuery unclick () e unbind () eventi?
-
02-07-2019 - |
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?
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.