使用本机 Javascript 实现 jQuery 的“实时”绑定器

2024-03-14

我试图弄清楚如何将事件绑定到动态创建的元素。即使在元素被销毁和重新生成之后,我也需要事件持续存在于元素上。

显然,使用 jQuery 的 live 函数很容易,但是用本机 Javascript 实现它们会是什么样子呢?


这是一个简单的例子:

function live(eventType, elementId, cb) {
    document.addEventListener(eventType, function (event) {
        if (event.target.id === elementId) {
            cb.call(event.target, event);
        }
    });
}

live("click", "test", function (event) {
    alert(this.id);
});

基本思想是您希望将事件处理程序附加到文档并让事件在 DOM 中冒泡。然后,检查event.target属性来查看它是否符合所需的条件(在本例中,只是id的元素)。

Edit:

@shabunc https://stackoverflow.com/questions/9106329/implementing-jquerys-live-binder-with-native-javascript/9106397#comment30938597_9106397我的解决方案发现了一个相当大的问题——无法正确检测子元素上的事件。解决此问题的一种方法是查看祖先元素以查看是否有指定的元素id:

function live (eventType, elementId, cb) {
    document.addEventListener(eventType, function (event) {
        var el = event.target
            , found;

        while (el && !(found = el.id === elementId)) {
            el = el.parentElement;
        }

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

使用本机 Javascript 实现 jQuery 的“实时”绑定器 的相关文章

  • 如何使用 JavaScript 或 jQuery 清除 Google Chrome、Mozilla Firefox 和 Safari 中的剪贴板数据

    我正在开发一个网站 我想在使用 JavaScript 或 jQuery 查看我的网站时按下打印屏幕按钮时清除剪贴板数据 谁能帮我解决这个问题 我在 Internet Explorer 中成功处理了这个问题 提前致谢 由于安全原因 您无法使用
  • dataTables fnFilter 列 on img 文件名

    我正在尝试根据标签的 src 属性中的图像文件名来过滤列 我的行看起来像这样 tr class unread odd td class td tr
  • 如何提高 highcharts 图表创建和渲染的性能

    我本地有一个文件JSON格式化数据 我创造了一点点PHP脚本在调用时回显该文件的输出AJAX 数据文件的大小是59k 我按照 highcharts 建议禁用动画和阴影 当我加载图表时 渲染需要非常非常长的时间 我已经粘贴了下面的脚本 我有什
  • 热成像调色板

    自热成像早期以来 红外热像仪经常使用独特的调色板 从黑色到蓝色 品红色 橙色 黄色到亮白色 这个调色板通常被称为Iron or Ironbow 这是使用前视红外相机拍摄的图像的典型假彩色可视化 来源 维基百科 术语科特 http commo
  • 如何在 Angular 中实现全局加载器

    我有一个全局加载器 其实现如下 核心模块 router events pipe filter x gt x instanceof NavigationStart subscribe gt loaderService show router
  • 如何将 iLike 运算符与 Sequelize 结合使用来进行不区分大小写的查询

    我使用 Sequelize 和 PostgreSQL 来管理我的数据库 我想执行不区分大小写的搜索查询 当我用谷歌搜索时 有人说我可以使用 iLike 运算符来做到这一点 我尝试以这种方式实现 var getRadiosByGenre fu
  • 帮助在 UIWebView 中使用 Javascript 代码

    我想在 webView 中运行以下代码 以便内容可编辑 javascript document body contentEditable true document designMode on void 0 到目前为止 我已经尝试过这个 v
  • innerText 和 html 之间的区别

    有什么区别innerText text and html innerText or text http docs jquery com Attributes text如果您使用的是 jQuery 不包含任何 HTML 标签 因此 如果您有一
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • 如何使用 jQuery 显示“忙”指示器?

    如何在网页中的特定点显示旋转的 忙 指示器 我想在 Ajax 请求开始 完成时启动 停止指示器 这真的只是显示 隐藏 gif 动画的问题 还是有更优雅的解决方案 您可以只显示 隐藏 gif 但您也可以将其嵌入到 ajaxSetup 中 以便
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • 无法使用 Excel JavaScript API 设置 NumberFormat

    我正在使用 Excel Javascript API 在搜索文档后 仍然找不到我想要实现的解决方案 因此 我想将所有内容设置为数字格式 文本 这样 Excel 的自动格式设置就不会与任何单元格的内容混淆 不会删除前导零或更改日期格式 文档建
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • 如何使用 Firebase Cloud Functions 在 DataSnapshot 中查找特定值

    我正在尝试创建一个云函数 该函数将在 HTTP 请求 在计时器上发送 上触发 这将删除具有特定值的所有子项 数据库节点如下所示 activities 4GI1QXUJG0MeQ8Bq19WOdCQFo9r1 uid activity ham
  • 带数字键的 Immutable.js 映射(包括性能测试)

    我在 React Native 应用程序中将 Immutable js 与 Redux 结合使用 元数据 例如查找表 是从服务器获取的 并作为 Immutable Map 保存在应用程序本地 查找值的键是整数 数据库中的主键 当我获取数据时
  • IE8 - 隐藏 div 内的表单,返回键不再起作用

    我有一个登录表单 位于带有 display none 的 div 中 然后我使用 jquery 淡入表单 但 Enter Return 键不再提交表单 如果我将显示更改为阻止 则效果很好 此问题仅存在于 IE 中 有任何想法吗 这是一个不起
  • Tizen SDK:找不到变量:tizen

    我正在尝试使用 Tizen SDK 创建一个 Web 应用程序 当我启动应用程序时 一切都很好 但是当我在模拟器上按 后退 按钮时 没有任何反应 并且我看到一条消息 55435 js main js 9 ReferenceError 找不到
  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激
  • 阻止 Chrome 扩展程序的 popup.html 自动打开

    我正在创建一个 Chrome 扩展程序 其中包含background html每分钟从 API 请求一次信息的文件 收到信息后 它会发送消息popup html弹出窗口使用 JSON 信息将新的 HTML 元素附加到弹出窗口的主体上 问题是

随机推荐

  • 设置16位灰度QImage的像素值

    我有一个宽度 imagewidth 和高度 imageheight 的 16 位图像 数据当前存储在长度为 imagewidth imageheight 的无符号短整型数组中 我想从我的数据集 称为 数据 创建一个 16 位灰度 QImag
  • ios8如何从通讯录中选择联系人

    我一直在使用 ios7 开发 iOS 应用程序一年 现在我将其升级到 ios8 并看到有一种选择联系人的新方法 我现在做的是 void showABNewPersonViewController Calling the addresbook
  • pandas 数据框中的循环依赖

    以下代码对硬币翻转结果进行投注 您从 100 英镑开始 每次翻转的风险为 5 但由于我的代码根据您的起始余额计算赌注大小 因此赌注始终为 5 英镑 import pandas import matplotlib pyplot as plt
  • Google 网络字体在 Android 4.0 和 4.2.2 中无法使用 Web 视图

    当我在使用 Web 视图的 Android 应用程序中使用 Google Web 字体时 它们在 Android 4 4 版本中运行良好 某些搭载 Android 4 2 的设备显示默认字体 大多数都可以正常工作 然而 在 Android
  • JavaScript ES6 - 计算对象数组的重复项

    我正在为我的产品列表创建一个过滤器来计算所有生产商并显示如下 苹果 3 我从数组中删除了重复项 Apple Apple Apple 我使用了此链接 获取数组中的所有非唯一值 即 重复 多次出现 https stackoverflow com
  • R 中带有动画包的循环 GIF

    我正在尝试创建一个循环播放的 GIFanimation但由于某种原因 即使我设置了选项loop TRUE 我制作的图像只播放一次然后停止 我希望 GIF 能够无限期地播放 有小费吗 install packages animation li
  • 使用 knitr 和 .Rnw for LaTeX,如何在 PDF 输出中打印完整的参考书目?

    我似乎无法破解所有可能性并在 RStudio 的 PDF 输出中插入完整的参考书目 knitr Rnw 脚本和 编译 PDF 按钮 PDF 中所需的文本是引用作品的详细信息 这是一个小人国的 bibtex 文件 名为jabrefbibtes
  • Google App Engine - 删除 JPQL 查询和级联

    我注意到 使用下面的 JPQL 查询时 PersistentUser 的子项不会被删除 但是 如果我执行以下操作 子项将被删除entityManager remove object 这是预期的吗 为什么下面的 JPQL 查询不执行级联删除
  • 如何在 Teradata 14 中对子字符串进行分组?

    我有下表天睿14 我不允许自己编写过程和函数 但我可以使用strtok strtok split to table etc id property 1 1234X Yel 2225Y Red 1234X Gre 2 3 1222Y Pin
  • 匹配来自两个不同数据帧的键

    我有两个数据框 df1 Name Stage Description key 0 Sri 1 Sri is one of the good singer in this two one 1 NaN 2 Thanks for reading
  • SSL 握手调试不再适用于 Apache Tomcat/9.0.0.M22

    我必须在 Tomcat 操作系统 MS Windows 上调试 SSL 握手 因此我按照网上找到的说明进行操作 并在 setenv bat 中使用以下行启用了它 设置 JAVA OPTS JAVA OPTS Djavax net debug
  • 为什么跨域 JSONP 安全,而跨域 JSON 不安全?

    我在连接最近了解 JSONP 的一些点时遇到了困难 这是我的理解 由于同源政策 禁止任何内容 包括 JSON 的跨域 XmlHttpRequest 这可以防止 XSRF 您可以使用带有返回 JSONP 的 src 的脚本标记 在对 Java
  • 滚动日志文件并删除旧日志文件

    我正在开发一个基于 Java SOAP 的 Web 服务应用程序 其中我将 stdout 作为日志写入文本文件以供参考 该文件正在巨大地增长 因此我需要检查文件的大小 例如 如果文件大小超过 10 Mb 我必须创建另一个文件 像这样 我必须
  • 如何在嵌套函数中传递对象?

    我正在尝试覆盖save 在 R 中 以便在保存对象之前创建任何丢失的目录 我在使用省略号方法将对象通过一个函数传递到另一个函数时遇到问题 我的例子 save lt function file Overridden save target d
  • 尝试获取类方法指针时出现 E_NOINTERFACE

    我从 C 非托管代码调用 C 方法 我在从数组中返回的类实例获取值时遇到问题 我稍微简化了代码 这是有问题的方法 return MarshalAs UnmanagedType SafeArray SafeArraySubType VarEn
  • 在表单中的 tabcontrol 中与用户控件进行通信

    我认为 C 很难 尝试在 stackoverflow 中发布问题 我在用户控件中有一个列表框和一个按钮 其本身位于选项卡控件的选项卡页中 其本身位于表单上 单击按钮时 我需要从表单填充列表框 表单 gt 选项卡控件 gt 标签页 gt 用户
  • 提供静态资源的路径(如 .jpg 等?)

    我已经解决了许多有趣的路由问题 将请求 URL 转换为哈希值等 但出于好奇 有没有办法告诉路由系统您想要某个 url 下的任何内容子路径按字面意思提供服务 不通过控制器 例如 如果我有 home me public html rails p
  • java.io.IOException:无法读取 zip 条目源

    FileInputStream file new FileInputStream file path report xlsx XSSFWorkbook wb new XSSFWorkbook file ERROR LINE 我在第二行收到错
  • 在结构数组 (AoS) 和数组结构 (SoA) 之间来回切换

    在许多面向数据设计的著作中扮演着重要角色的一个特征是 在许多情况下 而不是 AoS 结构数组 struct C AoS int foo double bar std vector
  • 使用本机 Javascript 实现 jQuery 的“实时”绑定器

    我试图弄清楚如何将事件绑定到动态创建的元素 即使在元素被销毁和重新生成之后 我也需要事件持续存在于元素上 显然 使用 jQuery 的 live 函数很容易 但是用本机 Javascript 实现它们会是什么样子呢 这是一个简单的例子 fu