gpt4 book ai didi

javascript - 移除与节流功能结合使用的 Scroll 事件监听器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:17 26 4
gpt4 key购买 nike

我有一个函数,我称之为在我的页面上打开一个特定的 View

function dayViewOpen(target){
var date = getDate();
..
..
..
document.addEventListener('scroll',throttle(function(event){
scrollAddData(date);
},10));
}

类似地,我有一个关闭该特定 View 的功能

 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);
}
  • 然后我无法将 date 参数传递给我的处理程序(我如何将日期参数传递给处理程序)和
  • 即使我放弃日期参数,我也无法使用 removeEvent Listener 删除处理程序。 ( 如何正确删除事件监听器 )

任何帮助将不胜感激

最佳答案

您可以尝试在外部声明事件监听器,但在内部设置它:

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);
}

关于javascript - 移除与节流功能结合使用的 Scroll 事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com