监听 HTMLCollection 的变化(或实现类似的效果)

2024-01-06

我需要创建一个简单的工具提示库,其工作原理如下:

每个具有特定属性组合的 DOM 元素(例如 class="tooltip"、data-tooltip-text="some text")会在悬停时自动显示工具提示(包含来自数据 attr 的文本)。

此行为必须通过外部 DOM 操作持续存在。我真的很喜欢利用HTML集合 https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection为此,因为它的“实时”性质,因为每次 DOM 更改都迭代整个 DOM 听起来可能非常要求。

现在我很想观看/收听该集合,并在每次更改时运行一个序列(遍历节点,查看它们是否有侦听器,如果没有则添加它)。

我该怎么做呢?这watch https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch and observe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe方法似乎(如果我理解正确的话)能够做到这一点,但它们现在已被弃用。 MDN 是这么说的Proxy https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy涵盖了大多数用例,但它是否涵盖了我的用例(我还没有找到使其工作的方法)?或者我还缺少其他什么方式吗?

那么呢变异观察者 https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver?我认为深入观察整个应用程序并在每次更改时通过 querySelectorAll 重复获取新的 NodeList 要求太高(该库应该在 React 应用程序上运行)。通过 React 将 HTMLCollection(作为值)动态提交到 DOM 中,然后(浅层)使用 MutationObserver 监听更改可能会起作用,但我怀疑这是否是一个好主意。


None

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

监听 HTMLCollection 的变化(或实现类似的效果) 的相关文章

  • 如何按日期属性对对象数组进行排序?

    假设我有一个由几个对象组成的数组 var array id 1 date Mar 12 2012 10 00 00 AM id 2 date Mar 8 2012 08 00 00 AM 如何按日期元素从最接近当前日期和时间的日期开始对该数
  • 在哪里声明类常量?

    我使用类成员来保存常量 例如 function Foo Foo CONSTANT1 1 Foo CONSTANT2 2 这工作得很好 除了它看起来有点无组织 所有代码都特定于Foo遍布全球范围 所以我考虑将常量声明移到内部Foo 声明 但是
  • Google Analytics 是否具有针对长时间运行的网络应用程序的“心跳”功能?

    我正在制作一个专注于观看嵌入内容的网络应用程序 我希望应用程序客户端向 GA Google Analytics 发送 心跳 类型的信号以保持会话继续进行 现在看来 如果访问者观看视频 5 10 分钟 GA 就会假设他已经离开页面 并将用户的
  • PMT功能 支付方式

    下面是我计算贷款付款的函数 就像在 Excel 中一样 我需要添加另一个参数 即付款类型 function PMT ir np pv fv ir interest rate per month np number of periods mo
  • 我应该如何优化这个文件系统 I/O 绑定程序?

    我有一个 python 程序 它执行如下操作 从 csv 文件中读取一行 对其进行一些变换 将其分解为实际的行 因为它们将被写入数据库 将这些行写入单独的 csv 文件 除非文件已完全读取 否则返回步骤 1 运行 SQL Loader 并将
  • AngularJS:如何在 AngularJS 中使用或注入第三方库

    我是 Angular 和 Deployd 的新手 想知道如何一起使用它们 我发现 Deployd 网站中的示例很好 但它只消耗其余 API 数据 我想了解如何将 Deployd 作为 AngularJS 中的服务 例如 通过部署中可用的收集
  • 单击按钮时执行 python 脚本

    我有一个带有一个按钮的 HTML 页面 当我们单击该按钮时 我需要执行一个 python 脚本 并返回到包含结果的同一 HTML 页面 所以我需要对返回值进行一些验证并执行一些操作 这是我的代码 HTML
  • 属性列表后缺少 jquery 验证 }

    我这里有这个代码 order validate rules name required true lastname required true address required true telephone required true di
  • 客户端上传并读取文件,角度为2

    我需要用户的日志文件 以便我可以读取和分析这些文件 例如某种放置区域 用户放置一个文件 然后我可以用javascript读取它 我使用 Angular2 rc5 我有 node js 在后台运行 但我不需要那里的数据 我只需要在客户端 是否
  • 在 Android 谷歌地图中绘制 4K 折线

    我现在正在开发一个适用于 Android 设备的应用程序 主要功能是在地图上绘制折线以显示城市中每条街道的交通情况 不幸的是 当我绘制大约 3K 折线时 数量会根据屏幕尺寸和缩放级别而减少 我的地图变得非常慢 我没有提及绘制所有线条的时间
  • 为什么 Firefox 对“select”标签上的“click”事件的反应与 Webkit 和 IE 不同?

    我意识到 Firefox 对待click事件于
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • 如何在 jQuery 中检查 null 对象

    我正在使用 jQuery 我想检查页面中是否存在某个元素 我写了以下代码 但它不起作用 if btext i null alert btext i text btext i text Branch i 如何检查元素是否存在 检查jQuery
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • Socket.io 不断重复连接并忽略其他事件

    我正在尝试制作一个网络应用程序 用户可以在其中互相玩环形国际象棋 这是我的 app js 在服务器上 var express require express var app express var http require http Ser
  • 如何在 PHP、HTML 表单和 Javascript 之间传递布尔值

    我有一个 PHP 程序 它使用 HTML 表单并使用 JavaScript 进行验证 HTML 表单中有一个隐藏字段 其中包含一个布尔值 该值由 PHP 设置 由 JavaScript 在提交时进行验证 然后传递到另一个 PHP 页面 当我
  • 在 JavaScript 中添加事件的最佳方式是什么?

    我发现在 JavaScript 中设置事件有两种主要方法 直接在标签内添加一个事件 如下所示 a href do foo a 通过 JavaScript 设置它们 如下所示 a href do bar a 并在 a 中添加一个事件
  • PHP include():文件大小和性能

    一个没有经验的PHP问题 我有一个 PHP 脚本文件 我需要在不同页面的很多地方多次包含该文件 我可以选择将包含的文件分解为几个较小的文件 并根据需要包含这些文件 或者 我可以将它们全部保存在一个 PHP 文件中 我想知道在这种情况下使用较
  • Selenium - 运行 javascript

    我有一个愚蠢的问题 如何运行位于测试站点上的脚本 我可以运行警报 但我无权访问我编写的脚本 我尝试过 runscript geteval 没有任何效果 由于 Selenium 是用 JavaScript 编写的 因此 window 对象会移
  • 关闭网站的 IE 8 兼容模式

    我的公司使用IE8作为默认浏览器 并且默认为所有内联网站点设置兼容模式 我正在构建一个在关闭兼容模式时可以工作的 Intranet 站点 我正在使用 Reset css 和几个开源 JavaScript 程序 例如数据表 我想做的是强制关闭

随机推荐

  • 如何更改 Vob 所有者和 Vob 组?

    我尝试更改 vob 所有者和 vob 组 它会抛出如下错误 Error No ClearCase group found Error unknown protection styles 您可以查看技术说明 关于在 Windows 上更改 V
  • JSTL 标签如何在 JSF 2.1 中评估以下内容

    我有下面的 Test xhtml 我可以在其中选择 海 空 模式 我不想将所有 4 个页面 Page1 xhtml Page2 xhtml Page3 xhtml Page4 xhtml 加载到 jsf 视图树中 在我的场景中 模式一旦选择
  • Java UTC 毫秒

    试图在java中获取世界时间似乎是如此困难 C 中类似这样的东西 DateTime Now ToUniversalTime 似乎是那么困难的事情 我有代码从较早的日期 也是 utc 中减去当前的 utc 时间来查找时间差 但我似乎不知道如何
  • Rails 将请求参数中的空数组转换为 nils

    我的应用程序中有一个 Backbone 模型 它不是典型的平面对象 它是一个大型嵌套对象 我们将嵌套部分存储在 MySQL 数据库的 TEXT 列中 我想在 Rails API 中处理 JSON 编码 解码 以便从外部看起来您可以 POST
  • PyMongo:当 no_cursor_timeout=True 时光标会发生什么

    看着cursorMongoDB 的文档 我没有看到删除游标的方法 如果我将光标与no cursor timeout属性设置为 True 当我的脚本终止时 即使我还没有到达光标结果的末尾 光标是否也会被删除 Python 使用引用计数进行对象
  • 使用 openpyxl 取消合并 Excel 工作表中的每个单元格

    有没有办法使用 openpyxl 取消合并 Excel 工作表中的每个单元格 不能保证每个或任何单元格都被合并 但基本上我想取消合并单元格 如果它们存在于工作表中 您可以迭代工作表的merged cells属性并使用每一个作为参数unmer
  • 在节点heroku项目上安装gems

    我正在 heroku 上编写一个节点应用程序 该应用程序需要一个 gem compass http compass style org待安装 用于节点罗盘 https github com nathggns node compass 但是
  • 使用 MPI_Scatter 发送矩阵的列

    我正在尝试使用 MPI 编写矩阵向量乘法程序 我试图将矩阵的列发送到单独的进程并在本地计算结果 最后我做了一个MPI Reduce using MPI SUM手术 发送矩阵的行很容易 因为 C 按行优先顺序存储数组 但列则不然 如果您不一一
  • 如何在.Net core应用程序中发布环境特定的应用程序设置?

    我有 3 个特定环境appsettings我的 Net core 应用程序中的文件 in project json我已经设置了publishOptions像这样 根据建议here https stackoverflow com questi
  • 如何从 Node.js 应用程序制作 exe 文件?

    我有一个我编写的节点应用程序 运行如下 node exe app js inputArg 有什么方法可以将其单独打包成 exe 吗 所以我可以做这样的事情吗 App exe inputArg 我有一些方法可以通过使用批处理文件来伪造这个 所
  • 在 WordPress 中选择查询

    我试图在 2 小时内完成此任务 我在数据库中有自定义字段 我想通过元键或元值获取 post id 我正在这样做 post id wpdb gt get var SELECT post id FROM wpdb gt postmeta WHE
  • 如何在C#中使用SqlCommand和SqlDataReader返回Json结果

    我正在尝试使用 SQL 查询SqlCommand我想查看从 SQL Server 数据库返回的完整结果集 然后返回 Json 格式 这是控制器中的代码 public ActionResult GetAllSummary string con
  • C++ libneo4j_client 中的准备语句?

    The neo4j 运行 API https cleishm github io libneo4j client doc latest neo4j client 8h html ae975ef8a6ba72d3cc98dfcc7b96f4f
  • 无法读取未定义的属性“模块”

    我有一个基本的了解Django and JS最近我开始学习Angular js 我编写了显示硬编码的代码json using Angular并失败了 我收到以下错误 Uncaught TypeError Cannot read proper
  • 输出 C# 对象列表 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题是由拼写错误或无法再重现的问题引起的 虽然类似的问题可能是on topic help on topic在这里 这个问题的解决方式不
  • Dll注入。带参数执行CreateRemoteThread

    我写的dll注入程序运行得很好 它将 dll 加载到远程进程中并调用一些函数 现在我想将参数传递给该函数 CreateRemoteThread 有 lpParameter 来实现这一点 但是如何在 dll 中获取传递的参数以在函数中使用它
  • 数据库更改后如何刷新 ListView?

    我正在尝试在 Android 应用程序中管理一个简单的列表 列表的内容保存在 SQLite 数据库中 当用户选择并按住特定行时 会出现一个带有 删除 选项的上下文菜单 当他们选择 删除 时 该行将从数据库中删除 但视图不会刷新 当我退出应用
  • SignalR 组未获取数据

    您好 我遇到一个问题 组中的 signalR 客户无法收到发送的信息 我已经尝试过两种方法 但都不起作用 在加载的网页上 客户端将调用服务器来获取组名称 然后调用集线器上的方法将用户加入该组 JavaScript var connectio
  • 如何在 Jetpack Compose Android 上的 LazyColumn 中显示项目视图的动画

    我在惰性列视图中有一个项目列表 当我们从列表中删除一项时如何显示动画 我需要为正在删除的视图设置动画 删除操作是通过按视图内的删除图标来完成的 我尝试过AnimationVisibility并且它没有按预期工作 实验性的添加了对惰性列表项目
  • 监听 HTMLCollection 的变化(或实现类似的效果)

    我需要创建一个简单的工具提示库 其工作原理如下 每个具有特定属性组合的 DOM 元素 例如 class tooltip data tooltip text some text 会在悬停时自动显示工具提示 包含来自数据 attr 的文本 此行