Javascript 将多个EventListener设置为元素,但删除单个元素

Javascript 将多个EventListener设置为元素,但删除单个元素,javascript,html,jquery,bootstrap-4,Javascript,Html,Jquery,Bootstrap 4,我在示例中有一个元素-$(窗口)。我想在这个元素上放置几个相同的EventListener,在这里“滚动”两次。这两个EventListener各自执行不同的功能,我不能/不想彼此连接,这里以简化的方式显示。如何删除单个EventListener 这是我举的一个小例子 //滚动时记录1 $(窗口)。在(“滚动”上,()=>{ 控制台日志(1); }); //滚动时记录2 $(窗口).bind(“滚动”,()=>{ 控制台日志(2); }); //2秒后停止记录1 设置超时(()=>{ $(窗口

我在示例中有一个元素-$(窗口)。我想在这个元素上放置几个相同的EventListener,在这里“滚动”两次。这两个EventListener各自执行不同的功能,我不能/不想彼此连接,这里以简化的方式显示。如何删除单个EventListener

这是我举的一个小例子

//滚动时记录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;
背景:蓝色;
}

注意绑定/解除绑定不推荐使用,在内部使用开/关