javascript - Odstrániť poslucháča udalosti Scroll používaného v spojení s funkciou obmedzovania frekvencie
Mám funkciu, ktorú volám ktorá otvára konkrétne zobrazenie na mojej stránke.
function dayViewOpen(target){
var date = getDate();
..
..
..
document.addEventListener('scroll',throttle(function(event){
scrollAddData(date);
},10));
}
podobne mám funkciu na zatvorenie toho konkrétneho pohľadu
function dayViewClose(target){
..
..
}
Všetko fungovalo doteraz dokonale. Ale problémy začínajú, keď musím odstrániť predtým pridaného poslucháča udalostí. To znamená, že musím odstrániť poslucháča udalostí, keď volám funkciu dayViewclose();
Chápem, že potrebujeme mať odkaz na poslucháča, aby sme ho mohli odstrániť, takže keď to robím takto.
var handler = throttle(function(event){
scrollAddData();
},10);
function dayViewOpen(target){
var date = getDate();
..
..
..
document.addEventListener('scroll',handler,false);
}
function dayViewClose(target){
..
..
//remove earlier added event listener
document.removeEventListener('scroll',handler,false);
}
- potom nie som schopný odovzdať parameter date do môjho handlera ( ako môžem odovzdať parameter date do handlera ) a
- Aj keď prepustím parameter dátumu, stále nie som schopný odstrániť obsluhovač pomocou removeEventListener. ( ako môžem správne odstrániť event listener )
Každá pomoc by bola veľmi ocenená
Odpoveď č. 1
Môžete skúsiť deklarovať poslucháča udalostí navonok, ale nastaviť ho vo vnútri:
var handler;
function dayViewOpen(target){
var date = getDate();
/* ... */
handler = throttle(function(event){
scrollAddData(date);
}, 10);
document.addEventListener('scroll', handler, false);
}
function dayViewClose(target){
/* ... */
document.removeEventListener('scroll', handler, false);
}
