javascript - 像 jQuery 中那样的命名空间普通 JavaScript 事件

标签 javascript jquery events dom-events

在 jQuery 中,当您设置一个事件时,您可以为其命名空间。这意味着(如果您愿意)您可以有多个调整窗口大小的事件,例如,并且能够单独解除绑定(bind)它们而不解除绑定(bind)该选择器上的所有事件。

jQuery 命名空间示例:

$(window).on('scroll.myScrollNamespace, function() ...

我想知道如何在纯 JavaScript 中创建命名空间。这显然行不通:

window.addEventListener('resize.myScrollNamespace', function() ...

最佳答案

如果不是匿名函数:

window.addEventListener('resize', function () {...});

你使用命名函数:

window.addEventListener('resize', function myScroll() {...});

那么你可以使用:

window.removeEventListener('resize', myScroll);

确保您有 myScroll在适用范围。当你在不同的地方删除监听器而不是添加它们时,也许你应该在一些外部范围内定义你的函数并在 addEventListener 中使用它们的名称。与 removeEventListener 中的方式相同:

function myScroll() {
  // ...
}

window.addEventListener('resize', myScroll);

window.removeEventListener('resize', myScroll);

如果您希望能够一次移除多个监听器,那么您必须将它们存储在某个数组中,并为其每个元素调用 removeEventListener。

参见 EventTarget.removeEventListener() 文档。

关于javascript - 像 jQuery 中那样的命名空间普通 JavaScript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800882/

相关文章:

Javascript事件语法问题

jquery - 使用 jQuery 从上到下为 div 设置动画?

wpf - 在 WPF 中,如何为模板中设计的 FrameworkElement 添加 EventHandler?

java - 使用 Java swing 等待事件

javascript - 从网页结果中提取 URL 并在 Iframe 中显示该 URL

javascript - 如何从 onItemSelect 回调中找到 jquery 自动完成输入的 id?

javascript - 菜单图标动画 jQuery

jquery - 进入视口(viewport)时将事件添加到元素列表

javascript - 我可以在 phonegap-cordova 中编写一个插件,它可以作为第三方工具集成到所有 native 和混合应用程序中吗?

javascript - 如何使用 Nunjucks 或 Node.JS 对 JSON 数据进行分组并按月元素计数