off-metodi
Metodi off mahdollistaa tapahtumankäsittelijän
irrottamisen elementistä. Käsittelijän liittämiseen
voidaan käyttää metodia
off.
Syntaksi
Näin poistamme tapahtumankäsittelijän elementistä,
ensimmäisenä parametrina merkkijonona
annetaan yksi tai useampi tapahtuma välilyönneillä erotettuna,
toisena - annamme lisäsuodatinojaimen elementin
sisäisille jälkeläisille
(sen on vastattava sitä, jonka annoimme
metodille on, kun liitimme
käsittelijän). Poistaaksesi kaikki delegoidut tapahtumat,
anna arvo '**'. Toinen parametri
on valinnainen. Kolmantena annamme käsittelijäfunktion
(jonka liitimme), jolle annetaan tapahtumaobjekti
tai annamme false:
$(valitsin).off(tapahtumat, [valitsin], käsittelijäfunktio(tapahtumaobjekti));
Metodia off voidaan käyttää toisella tavalla,
silloin ensimmäisenä parametrina annetaan
JavaScript-objekti, jossa avaimet ovat tapahtumatyyppi ja
arvot ovat käsittelijäfunktiot, jotka lisäsimme
elementtiin:
$(valitsin).off({'tapahtumatyyppi': handler}, [valitsin]);
Voimme yksinkertaisesti antaa yhden parametrin
jQuery.Event-objektin muodossa:
$(valitsin).off(tapahtuma);
Jos metodia kutsutaan ilman parametreja, irrotamme elementistä kaikki liitetyt käsittelijät:
$(valitsin).off();
Esimerkki
Lisätään kappaleille käsittelijäfunktio
testFunc. Mutta poistetaan heti käsittelijä
toisesta kappaleesta, joten klikkaus toiseen kappaleeseen ei
johda mihinkään (jos kommentoimme viimeisen
koodirivin pois, näemme kuinka tapahtuma laukeaa myös
klikkauksesta toiseen kappaleeseen):
<p id="test1">click1</p>
<p id="test2">click2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // lisätään käsittelijä
$('#test2').on('click', {text: 'bbb'}, testFunc); // lisätään käsittelijä
$('#test2').off('click', testFunc); // poistetaan käsittelijä