我有一个功能,我打电话给,在我的页面上打开一个特定的视图。
function dayViewOpen(target){
var date = getDate();
..
..
..
document.addEventListener('scroll',throttle(function(event){
scrollAddData(date);
},10));
}
类似地,我有一个关闭特定视图的功能
function dayViewClose(target){
..
..
}
到目前为止一切都很完美。但是当我必须删除之前添加的事件监听器时,问题就开始出现了。即,当我调用函数dayViewclose();
时,我必须删除事件监听器我知道我们需要一个引用侦听器来删除它,所以当我这样做的时候就这样。
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);
}
任何帮助都会有很大帮助
答案 0 :(得分:3)
您可以尝试在外部声明事件侦听器,但将其设置在内部:
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);
}