Metoden off
Metoden off låter dig ta bort en händelsehanterare
från ett element. För att binda en händelsehanterare
kan du använda metoden
off.
Syntax
Så här tar vi bort en händelsehanterare från ett element,
som första parameter skickas en eller flera händelser som en sträng
separerade med mellanslag, som andra parameter skickar vi ett ytterligare
filtrerande selektor för inneslutna element
(den måste matcha den vi skickade till
metoden on när vi lade till
hanteraren). För att ta bort alla delegerade händelser,
skicka värdet '**'. Den andra parametern
är valfri. Som tredje parameter skickar vi händelsehanterarfunktionen
(som vi lade till), som tar emot händelseobjektet
eller så skickar vi false:
$(selektor).off(händelser, [selektor], händelsehanterare(händelseobjekt));
Du kan använda metoden off på ett annat sätt,
då skickas som första parameter ett
JavaScript-objekt, där nycklarna är händelsetypen och
värdena är händelsehanterarna som vi lade till till
elementet:
$(selektor).off({'händelsetyp': handler}, [selektor]);
Vi kan också bara skicka en parameter i form av
ett objekt jQuery.Event:
$(selektor).off(händelse);
Om du inte skickar några parametrar till metoden så tar vi bort alla tillagda hanterare från elementet:
$(selektor).off();
Exempel
Låt oss lägga till funktionen testFunc som händelsehanterare
till styckena. Men vi tar omedelbart bort hanteraren från
det andra stycket, så ett klick på det andra stycket kommer inte
att leda till något (om vi däremot kommenterar bort den sista
raden kod, kommer vi att se hur händelsen utlöses även
vid klick på det andra stycket):
<p id="test1">click1</p>
<p id="test2">click2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // lägger till hanterare
$('#test2').on('click', {text: 'bbb'}, testFunc); // lägger till hanterare
$('#test2').off('click', testFunc); // tar bort hanterare