document.addEventListener 与 $(document).on

2024-01-31

我不知何故发现向文档添加事件侦听器的行为有点奇怪。虽然向 HTMLElements 添加侦听器工作正常,但向文档添加侦听器不起作用。但奇怪的是,使用 jQuery 就可以了。

那么有人可以解释一下,为什么这两个函数没有做完全相同的事情?

["customEvent1", "customEvent2"].forEach(
    (event: string) => {
        document.addEventListener(event, () => this.eventHandler());
    });

$(document).on("customEvent1 customEvent2", () => this.eventHandler());

编辑: 嗯,看来大家对环境有一些误解。

  1. 该函数被一个类包围
  2. 我正在使用 TypeScript/ES6
  3. EventHandler 是一个类方法
  4. 自定义事件的触发方式为$(document).trigger("customEvent1");

如果您使用 jQuery 不会创建本机事件$(document).trigger("customEvent2"); (jquery src/event/trigger.js https://github.com/jquery/jquery/blob/52e24471c89b80e6208b4987bb76994e64c1e489/src/event/trigger.js),它仅模拟本机事件处理。

因此,如果您使用注册事件处理程序document.addEventListener那么你就不能使用$(document).trigger(对于那些事件。

但是如果您使用本机代码创建并分派事件:

var event = new Event('customEvent1');
document.dispatchEvent(event);

然后你就可以用两者来捕捉它document.addEventListener和 jQuery 的.on

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

document.addEventListener 与 $(document).on 的相关文章

随机推荐

  • OpenGL 中着色器的问题

    我正在尝试在 C 中使用像 glShaderSource 这样的东西 Visual Studio 表示像 glCompileShader 或 glCreateProgram 这样的函数不存在 我使用 FreeGLUT 来包含 OpenGL
  • 如何在一次运行中将每个命名的 tibble 保存为列表中的单独 tibble 或数据帧

    这个问题与此相关如何在 R 中循环数据框中的列 应用扩展并创建新的数据框 https stackoverflow com questions 73436305 how to loop over the columns in a datafr
  • 隐藏移动设备的 Javascript 文件

    有没有办法阻止在设备 移动设备 上加载 javascript 文件 我做了一个响应式设计 有一些脚本不用于移动版本 所以如果它们不需要加载那就太好了 非常感谢 检查浏览器是否没有ismobile and document write输出脚本
  • 获取Oracle中所有表的列表?

    如何查询 Oracle 数据库以显示其中所有表的名称 SELECT owner table name FROM dba tables 这是假设您有权访问DBA TABLES数据字典视图 如果您没有这些权限但需要它们 您可以请求 DBA 显式
  • 异步/等待并打开文件流?

    当我试图确定我是否使用的是Stream方法如ReadAsync and CopyToAsync正确 C 4 5 文件读取性能同步与异步 https stackoverflow com questions 18331349 c sharp 4
  • Spark 中的用户定义变量 - org.apache.spark.SparkException:任务不可序列化

    我想添加可在 Spark 中的过滤器和映射函数内部使用的用户定义变量 目前我在尝试执行此操作时遇到错误 编辑 我在 zeppelin 笔记本上运行此代码 因此我不必创建单独的类 我的代码有点像 val some value qwerty v
  • 使用 MongoDB API 连接到 CosmosDB 时出现超时错误

    我目前正在通过以下教程学习如何通过 mongodb API 使用 Azure cosmos db https learn microsoft com en us azure cosmos db tutorial develop mongod
  • 在 Angular 中动态设置 ngModelOptions

    我有以下片段
  • Python 作为“perl -pe”,为标准输入中的每一行执行Python命令[重复]

    这个问题在这里已经有答案了 可能的重复 Python 相当于 perl pe https stackoverflow com questions 7842919 python equivalent to perl pe 有没有办法处理每一行
  • PHP / MySQL 概念数据库“同步”问题

    我正在开发一个 PHP 类来实现PDO将本地数据库的表与远程数据库的表同步 问题 我正在寻找一些关于如何在我的 同步 过程中实现 备份 功能的想法 方法 建议 The ideas is 在实际插入数据之前 我会完全擦除本地表的数据 时间不是
  • 如何使用 PHPUnit 设置 ExpectedException()?

    使用 PHPUnit 我可以测试成功如果对类的特定调用正确抛出如下异常 try dummy Import Driver Excel get file type from file name BAD NAME nnn catch Except
  • IBM Worklight - 如何在 Android 中启用 WebView 调试?

    由于 Chrome 有一个很棒的远程调试功能 我想知道这对 Worklight 中的开发有何帮助 在下面的文档中 他们说要调试 WebView 的内容 您需要通过调用 setWebContentsDebuggingEnabled WebVi
  • Android Spinner 项目作为网格

    默认情况下 单击微调器时 项目将显示为列表 我想更改显示为网格的项目 我怎样才能做到这一点 我只需要一些指导 谢谢 更新 这是我的代码 我的旋转下拉菜单显示为多行网格 我附上了一张它此时的样子的图片 我也无法选择值 package com
  • 使用 pip install 安装 Jupyter Notebook 时出错

    我想在没有 Anaconda 的情况下安装 Jupyter Notebook 我使用的是 Python 版本 3 12 0 安装 Jupyter Notebook 时使用pip install notebook 出现以下错误 Collect
  • Monaco Editor 获取插入符号的源代码索引

    有没有办法将插入符号位置作为源代码字符串中的索引 我知道我可以获取位置 这将为我提供一个包含行和列的对象 但是有没有办法获取或将行 列转换为字符串字符索引 例如 如果我有 using System using System Data 我将插
  • 如何修复 Git 合并与断点文件中的冲突?

    我有一个 iPad 应用程序 XCode 5 iOS 7 Git 源代码控制和 Storyboards 我目前正在处理两 2 个分支 1 8 1 在 App Store 中 2 0 0 作为工作副本 我对下一个版本的 1 8 1 做了轻微的
  • ASP.Net Core 类库的 Entity Framework Core 迁移

    我一直在尝试遵循 Ben Cull 的建议 http benjii me 2016 06 entity framework core migrations for class library projects http benjii me
  • C++ 项目中 NuGet 包的 PackageReference

    我参与了一个项目 我们在 Visual Studioe 中使用 packages config 文件作为 NuGet 包 然后通过Import我们的项目文件中的声明 如果您总是想要这些包 那么这种方法很好 但是如果开发人员不需要 不想要它们
  • 如何实现flutter web推送通知

    我想知道是否可以在 flutter web 中实现推送通知 我发现我可以使用以下命令为移动应用程序创建推送通知firbase messaging但可以将它用于网络应用程序吗 或任何其他替代方案来实现它 我认为您已经建立了一个 flutter
  • document.addEventListener 与 $(document).on

    我不知何故发现向文档添加事件侦听器的行为有点奇怪 虽然向 HTMLElements 添加侦听器工作正常 但向文档添加侦听器不起作用 但奇怪的是 使用 jQuery 就可以了 那么有人可以解释一下 为什么这两个函数没有做完全相同的事情 cus