如何将点击传播到光标下的所有div?

2024-04-10

我有一堆 div 绝对位于彼此之上。当我将点击事件绑定到所有这些时,只有顶部的 div 响应。如何将事件发送到光标下的所有div?


采纳 FelixKling 的建议使用document.elementFromPoint()和 Amberlamps 的小提琴,并使用 jQuery 进行 DOM 交互,我最终得到了以下结果:

$divs = $("div").on('click.passThrough', function (e, ee) {
  var $el = $(this).hide();
  try {
    console.log($el.text());//or console.log(...) or whatever
    ee = ee || {
      pageX: e.pageX,
      pageY: e.pageY
    };
    var next = document.elementFromPoint(ee.pageX, ee.pageY);
    next = (next.nodeType == 3) ? next.parentNode : next //Opera
    $(next).trigger('click.passThrough', ee);
  } catch (err) {
      console.log("click.passThrough failed: " + err.message);
  } finally {
    $el.show();
  }
});

DEMO http://jsfiddle.net/E9zTs/2/

try/catch/finally用于确保元素再次显示,即使发生错误也是如此。

有两种机制允许点击事件传递或不传递:

  • 仅将处理程序附加到选定的元素(标准 jQuery)。
  • 命名点击事件,click.passThrough类似于event.stopPropagation().

这些机制单独或组合起来,在控制“直通”行为的附加和传播方面提供了一定的灵活性。例如,在DEMO中,尝试删除类p从“b”元素中查看传播行为如何变化。

就目前而言,需要编辑代码以获得不同的应用程序级行为。更通用的解决方案是:

  • 允许以编程方式附加特定于应用程序的行为
  • 允许以编程方式抑制“直通”传播,类似于event.stopPropagation().

这两个目标都可以通过建立一个clickPassthroughjQuery 中的事件,具有底层的“passThrough”行为,但要实现这一点需要做更多的工作。也许有人想尝试一下。

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

如何将点击传播到光标下的所有div? 的相关文章

  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 使用 JQuery 更改元素的顺序

    有人知道我做错了什么吗 我正在尝试更改某些图像的显示顺序 我希望每次按下按钮时图像都会向右 向左移动一个位置 这是我尝试过的 但没有运气 任何帮助或见解将不胜感激 rightShift click function img hide var
  • 如何判断 jquery 对话框是否打开? [复制]

    这个问题在这里已经有答案了 寻找通用案例解决方案来确定当前是否打开任何 jquery 对话框 有多个 试过 ui dialog content dialog isOpen true ui dialog dialog isOpen true
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 更改文本输入标签中文本的大小?

    我有一个很大的文本输入框 但我无法更改字体大小
  • 如何在jquery中以相反的顺序迭代元素? [复制]

    这个问题在这里已经有答案了 我是jquery的新手 我想知道如何使用each 在jquery中以相反的顺序迭代表单元素 任何帮助 将不胜感激 尝试这个 input get reverse each function
  • 为什么元素上的负底部边距会降低该元素父元素的高度?

    这可能是由于边距折叠造成的 我知道边距折叠 至少知道它如何影响相邻元素 但我不明白当涉及负边距时它如何在嵌套元素上工作 例如 在此标记和随附的 CSS 中 Markup div class parent div class child Ch
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐

  • 如何提取 SQLite FTS 表中的所有标记?

    出于调试目的 我想查看 SQLite 中全文搜索虚拟表中存在的所有标记 当我查看 FTS 表 名为fts table 我看到以下内容 但是浏览这些表中的数据不会显示标记列表 无论如何我都找不到 如何提取简单的令牌列表 你可以这样做ftx4a
  • 服务器在区域设置中设置为 en-GB,但日期时间解析为 en-US

    我通过将每条记录推送到验证阶段 然后将其放入数据库来处理记录 验证步骤之一需要检查某些列是否是日期 我使用 DateTime TryParse s out DateTime 执行此操作 假设这将使用运行进程的计算机上配置的区域设置 在我的本
  • 如何在 ASMACK 中解析 CustomIQ

    我正在我的应用程序中使用 ASMACK 库 我从我的服务器收到以下 IQ
  • 如何使用 NavController 导航片段而不将其添加到后台堆栈中?

    NavController有方法navigate默认情况下使用 backstack 进行导航 如何在没有后退堆栈的情况下导航到片段 请注意 我不是在问FragmentTransaction 如果你有一个后堆栈 A gt B 并想要获得一个后
  • 插件在 Windows 7 64 位上的 Eclipse 中不起作用

    在我全新的Windows 7机器上 我下载了Eclipse Galileo 和几个Eclipse插件 Android的ADT插件 Subclipse等 重新启动后 这些插件都没有显示在 IDE 中 首选项 菜单等中没有显示任何内容 但如果我
  • Await 将控制权返回给调用者——谁在等待的任务中执行同步代码?

    当遇到等待时 控制权返回给调用者 而等待的任务在后台运行 发出 等待网络请求 响应 我知道等待任务在等待网络响应时不需要线程 因为它实际上并没有运行任何东西 只是在等待 我想问 假设在等待的函数中 有一些同步代码 例如Console Wri
  • SVG图案动画

    我在 svg 中定义了一个模式 我想连续旋转它 我无法在该图案定义上应用动画 我将相同的动画应用于符号 它可以工作 但不能在图案上工作
  • 集成到 VNET 后无法连接到 Azure Function App

    问题概要 Azure Function App 集成到 VNET 且 WEBSITE VNET ROUTE ALL 设置为 1 后将无法访问 这是必需的 以便 Function App 可以安全地连接到 SQL 而无需公开 SQL Erro
  • 在继承类中扩展 wagtail Streamfields

    我有一个抽象类 其中有 ha StreamField 我还有一个继承自 BasePage 的类 CustomPage 我希望 CustomPage 向内容添加新的 StructBlock 我怎么做 class BasePage Page c
  • 如何在php中加密/解密数据?

    我目前是一名学生 正在学习 PHP 我正在尝试在 PHP 中对数据进行简单的加密 解密 我做了一些在线研究 其中一些非常令人困惑 至少对我来说 这就是我想做的 我有一个由这些字段组成的表 用户 ID 姓名 姓名 电子邮件 密码 我想要的是对
  • iPhone 的总内存

    我想知道Total我的 iPhone 中可用的 RAM 为此 我使用了以下代码 注意 请不要将此问题解释为检索 RAM 统计信息 例如 有线 非活动 活动 和 空闲 mach port t host port mach msg type n
  • HTML 5 通知无法在 Chrome 本地工作?

    我找到了以下 HTML 通知示例 它在 Chrome 和 Firefox 中运行良好 下载并在本地尝试后 它不再在 Chrome 中运行 这是预期的行为 Chrome 由于某种原因阻止本地通知 还是有其他原因导致此功能不起作用
  • Apyori 相关性测度

    我在用着Apyori https pypi org project apyori 库作为 Apriori 算法的实现 rules apriori trs min support 0 02 min confidence 0 1 min lif
  • 如何在 OpenGL ES 1.1 上用不同的纹理填充立方体的每一面?

    请 我需要教程 代码示例 了解如何在 OpenGL ES 1 1 上用不同的纹理填充立方体的每一面 我找到了很多教程 但没有一个教程清楚地解释了如何在每个面上放置不同的纹理 也没有一个提供简单的代码示例来说明如何做到这一点 我的实际代码 来
  • Haskell——从具体类型实例获取 TypeRep

    我想编写一个具有这种类型签名的函数 getTypeRep Typeable a gt t a gt TypeRep 其中 TypeRep 将是类型表示a 不是为了t a 也就是说 编译器应该在任何调用站点自动返回正确的类型表示 to获取类型
  • 在 Azure Web 应用程序上运行 Selenium

    我有一个 Azure Web 应用程序 当我在控制器上调用操作时 我想用它来屏幕抓取网站 如下所示 var driver new PhantomJSDriver driver Url http url com driver Navigate
  • Laravel:file_put_contents() 权限被拒绝 - 正确的存储/框架/缓存权限?

    我在编辑 Laravel 缓存时遇到了困难 它位于storage framework cache 我正在运行一个保存到某个缓存的作业 但是每次运行该作业时 都会发生此错误 ERROR file put contents var www ht
  • 继承和组合有什么区别?

    正如标题所说 两者的含义都让我困惑 继承表达了一个is a关系 而组合表达了has a两个类之间的关系 组合的一个示例是多边形 它具有有序的点序列 用 C 术语来说 struct Polygon std vector
  • CssSyntaxError - Tailwind 和 Next.js 项目中的未知单词

    10 小时后 由于以下构建失败 仍然无法部署我的应用程序 将 React Next 与 Tailwind 结合使用 我相信它来自 PostCSS 插件 但我找不到任何错误 如果有的话 它在生产构建之前在本地主机上完美运行 有什么方法可以识别
  • 如何将点击传播到光标下的所有div?

    我有一堆 div 绝对位于彼此之上 当我将点击事件绑定到所有这些时 只有顶部的 div 响应 如何将事件发送到光标下的所有div 采纳 FelixKling 的建议使用document elementFromPoint 和 Amberlam