Javascript 将多个EventListener设置为元素,但删除单个元素
我在示例中有一个元素-$(窗口)。我想在这个元素上放置几个相同的EventListener,在这里“滚动”两次。这两个EventListener各自执行不同的功能,我不能/不想彼此连接,这里以简化的方式显示。如何删除单个EventListener 这是我举的一个小例子Javascript 将多个EventListener设置为元素,但删除单个元素,javascript,html,jquery,bootstrap-4,Javascript,Html,Jquery,Bootstrap 4,我在示例中有一个元素-$(窗口)。我想在这个元素上放置几个相同的EventListener,在这里“滚动”两次。这两个EventListener各自执行不同的功能,我不能/不想彼此连接,这里以简化的方式显示。如何删除单个EventListener 这是我举的一个小例子 //滚动时记录1 $(窗口)。在(“滚动”上,()=>{ 控制台日志(1); }); //滚动时记录2 $(窗口).bind(“滚动”,()=>{ 控制台日志(2); }); //2秒后停止记录1 设置超时(()=>{ $(窗口
//滚动时记录1
$(窗口)。在(“滚动”上,()=>{
控制台日志(1);
});
//滚动时记录2
$(窗口).bind(“滚动”,()=>{
控制台日志(2);
});
//2秒后停止记录1
设置超时(()=>{
$(窗口)。解除绑定(“滚动”);//仅删除日志记录1
}, 2000);代码>
#测试{
高度:10000px;
宽度:100vw;
背景:蓝色;
}
您可以向事件中添加.namespace
。这仍将触发相同的滚动
事件,但允许您在原始代码中使用.off
(或.unbind
)引用该事件
以下是您的代码更新:
//滚动时记录1
$(窗口).on(“scroll.temp”,()=>{
控制台日志(1);
});
//滚动时记录2
$(窗口)。在(“滚动”上,()=>{
控制台日志(2);
});
//2秒后停止记录1
设置超时(()=>{
$(window).off(“scroll.temp”);//仅删除日志记录1
}, 2000);代码>
#测试{
高度:10000px;
宽度:100vw;
背景:蓝色;
}
您可以使用它并为滚动事件添加多个名称空间,如:
$(window).on("scroll.event1", () => {
console.log(1);
});
$(window).on("scroll.event2", () => {
console.log(2);
});
当您想要删除事件1时,只需调用它,如下所示:
setTimeout(() => {
$(window).off("scroll.event1"); // remove only logging 1
}, 2000);
演示:
$(窗口).on(“scroll.event1”,()=>{
控制台日志(1);
});
$(window).on(“scroll.event2”,()=>{
控制台日志(2);
});
//2秒后停止记录1
设置超时(()=>{
$(window).off(“scroll.event1”);//仅删除日志记录1
}, 2000);代码>
#测试{
高度:10000px;
宽度:100vw;
背景:蓝色;
}
注意绑定/解除绑定不推荐使用,在内部使用开/关