Metodo off
Il metodo off permette di scollegare un handler
di eventi da un elemento. Per collegare un handler
si può utilizzare il metodo
off.
Sintassi
In questo modo rimuoviamo un handler di eventi da un elemento,
come primo parametro sotto forma di stringa
viene passato uno o più eventi separati da
spazi, secondo - passiamo un selettore filtro aggiuntivo
per gli elementi discendenti all'interno dell'elemento
(deve corrispondere a quello che abbiamo passato
nel metodo on, quando abbiamo attaccato
l'handler). Per rimuovere tutti gli eventi delegati,
passare il valore '**'. Il secondo parametro
è opzionale. Come terzo passiamo la funzione handler
(che abbiamo attaccato), a cui viene passato l'oggetto
evento o passiamo false:
$(selettore).off(eventi, [selettore], funzione-handler(oggetto evento));
Si può utilizzare il metodo off in un altro modo,
allora come primo parametro viene passato
un oggetto JavaScript, dove le chiavi sono il tipo di evento, e
i valori sono le funzioni handler che abbiamo aggiunto
all'elemento:
$(selettore).off({'tipo evento': handler}, [selettore]);
Possiamo semplicemente passare un parametro sotto forma
di oggetto jQuery.Event:
$(selettore).off(evento);
Se non si passano parametri al metodo, allora scolleghiamo dall'elemento tutti gli handler attaccati:
$(selettore).off();
Esempio
Aggiungiamo la funzione handler
testFunc ai paragrafi.
Ma rimuoviamo immediatamente l'handler dal
secondo paragrafo, così il click sul secondo paragrafo non
porterà a nulla (se invece commentiamo l'ultima
riga di codice, vedremo come l'evento viene attivato
anche cliccando sul secondo paragrafo):
<p id="test1">click1</p>
<p id="test2">click2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // aggiungiamo l'handler
$('#test2').on('click', {text: 'bbb'}, testFunc); // aggiungiamo l'handler
$('#test2').off('click', testFunc); // rimuoviamo l'handler