如何将点击传播到光标下的所有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? 的相关文章

  • minmax 失败(属性值无效)

    Chrome 给出了invalid property value并且不尊重CSS grid template columns repeat auto fill minmax auto 1fr 当auto被替换为min content and
  • CSS 网格最小内容不适合内容

    我试图通过显式分配行 列和元素大小来将一些 div 放入网格中 并允许 CSS 网格使用以下 CSS 执行列和行大小调整工作 display grid grid auto columns min content 价值min content应
  • 半流体布局 CSS/Html

    我有一个两列布局 其中右列的静态宽度为 350px 左列的宽度应填充页面的其余部分 或者至少这是我想要发生的事情 但不幸的是事实并非如此 看一下我的 css html http jsfiddle net CmJ7P http jsfiddl
  • 如何将 vue3-openlayers 插件添加到 nuxt

    我有以下 main ts 文件Vue3 https v3 vuejs org import createApp from vue import App from App vue How to do this in nuxt3 import
  • 从流程图中获取数据系列的颜色

    在看到 stackoverflow 用户页面上很酷的新 声誉 选项卡后 我受到启发 开始尝试使用 Flot 图表库 我有一个包含数百个系列的折线图 在任何给定时间 这些系列中只有几个是可见的 我的数据系列分为几个 类别 我根据该类别分配数字
  • 全日历与 UTC 和本地日期的混淆

    我确实让 fullcalendar 正常初始化 所以它代表当前日期 午夜 gt 午夜 1 天 1 小时时段 我从其他一些数据源获取带有时间戳的数据 格式为 YYYY MM DD HH mm 作为字符串传输 无时区信息 因此 我将该字符串转换
  • 如何将值从孩子的孩子传递给父母?

    我有一个父组件 有一个子组件 它也有一个子组件 Parent Child One child of parent Child Two child of child 当在子二中定义一个值时 我使用回调将该值传递给子一 但我也想将相同的值传递回
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • jPlayer 无法在 Firefox 中播放 mp3

    我正在集成 jplayer 来播放由使用 jQuery 的单击事件触发的精选 mp3 文件 用于实现此目的的代码是 play link click function jquery jplayer 1 jPlayer destroy srcF
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • 如何使用 ReactJS 使表中的列可以以两种方式排序

    我正在 ReactJS 中构建一个简单的应用程序 它通过调用某个 API 来使用 JSON 数组 然后我将数组的结果填充到表中 我现在想让表的列可排序 我理想的情况是同时进行升序和降序排序 一旦我单击标题 当它按升序排序时 它应该按降序排序
  • 指定 body CSS 宽度安全吗?

    现在通常满足于以一定的尺寸居中 div Blah div 不使用包装器进行对齐和大小并直接将其应用到body tag 像这样 Blah 尺寸是
  • 反转比例函数

    这对我来说很有趣 看下面的D3代码 var scale d3 scale linear domain 100 500 range 10 350 scale 100 Returns 10 scale 300 Returns 180 scale
  • 如何从 Visual Studio Code API 打开浏览器

    我只是在探索一种从用于开发扩展的 Visual Studio Code API 打开默认浏览器的方法 以下是我的代码 var disposable vscode commands registerCommand extension brow
  • 使用 jQuery 的 ajax 方法以 blob 形式检索图像

    我最近问了另一个 相关 问题 这导致了这个后续问题 提交数据而不是输入表单的文件 https stackoverflow com questions 17643142 submitting data instead of a file fo
  • JS - 如何将图像对象变成灰度并显示它

    基本上 当单击按钮时 它会告诉移动设备转到相机 一旦相机拍照 它就会给我图像数据 它被称为数据 URL 吗 这是我处理它的代码 var imagesrc data image jpeg base64 imageData var myimag
  • Google 地图 v3 - 阻止 API 加载 Roboto 字体

    Google 将样式添加到地图容器中以覆盖我的样式 我知道如何解决这个问题 但API v3 8 9 exp 还加载了我并不真正需要 想要的网络字体 Roboto 有什么设置 选项 方法可以解决这个问题吗 我可以阻止 API 添加额外的 CS
  • 使用 CSP 防止自动点击链接 XSS 攻击

    当将 CSP 用于稍微不同的目的 沙箱 时 我意识到一个非常简单的自动点击链接似乎甚至可以绕过相对严格的 CSP 我所描述的内容如下 内容安全政策 default src none script src unsafe inline 还有身体
  • 如何使用node.js获取屏幕分辨率

    我需要使用 node js 获取屏幕分辨率 但以下代码不起作用 var w screen width var h screen height 这也行不通 var w window screen width var h window scre
  • 了解客户端文件的对象 URL 以及如何释放内存

    我在用createObjectURL获取本地图像文件的引用 URL 当我完成文件 图像后 我打电话revokeObjectURL释放该内存 一切对我来说都很好 但我只是想确保我释放了我能释放的所有内存 我检查后出现了我的担忧chrome b

随机推荐

  • 如何提取 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