使用选择器获取最接近的父元素(不包括当前元素)

2024-05-01

我正在尝试获取元素的最接近的父元素。

看着.closest() https://developer.mozilla.org/en-US/docs/Web/API/Element/closest,如果选择器与元素匹配,它似乎会返回元素本身:

Closest() 方法遍历 Element 及其父元素(标题 向文档根)直到找到与 提供选择器字符串。会自行返回或匹配的祖先。 如果不存在这样的元素,则返回 null。

(重点是我的)

那么,在给定选择器的情况下,获取元素最接近的父元素的最佳方法是什么?

Example

var el = document.getElementById('foo');
var closestParent = el.closest('div');
console.log(closestParent);
<div>root
  <div>level1
    <div id='foo'>level2</div>
  </div>
</div>

如你看到的,el.closest('div');回报el本身,而不是与选择器匹配的最接近的父级div(level1),这就是我需要的。

我知道在这种情况下我可以简单地做closestParent.parentElement,但这只是一个例子,我想弄清楚是否可以避免.closest()返回元素本身。


要排除当前元素,请获取closest()相对于其父节点 https://developer.mozilla.org/en-US/docs/Web/API/Node/parentNode:

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

使用选择器获取最接近的父元素(不包括当前元素) 的相关文章

随机推荐

  • 按位置获取元素?

    我正在研究 SVG 脚本 有 getElementById 或 getElementsByTagName 但我找不到任何方法来按位置获取元素 比如获取位置为x 10 y 10的元素 有什么办法可以实现这个目标吗 var yourElemen
  • Bootstrap 100% 宽度/全宽度

    我想用 Bootstrap 创建一个新网站 我需要它的宽度为 100 但我不希望它是流畅的 至少现在不是 我遇到的问题是 使用 bootstrap 标准将您限制为 960px 并且使用流体布局它是全宽的 但其行为就像流体布局应该通过在窗口尺
  • 如何在Nightwatch中测试伪元素的css属性

    我想使用 Nightwatch 测试我的网站上的背景图像是否正确 但它设置为 before 伪元素的背景 这是 CSS icon circle delete before content background url images svg
  • 错误:专用 IP 需要 invalid_request device_id 和 device_name

    我正在使用 localhost 8080 使用 Google Drive API 进行开发 突然我想在我的本地部署沙箱中测试它 它的IP地址为 192 168 1 1 8080 据此 我更改了开发人员控制台客户端回调 URL 中的凭据 我正
  • .NET 参考源代码中的四个破折号组是什么?

    我正在浏览源码PluralizationService http referencesource microsoft com System Data Entity Design System Data Entity Design Plura
  • 在 g++ 中链接文件

    最近我尝试用g 在Ubuntu上 编译一个程序 通常我使用 Dev C 在 Windows 上 只要我创建一个项目并将所有必要的文件放入其中 它就可以正常工作 编译程序时出现的错误是 filename cpp undefined refer
  • 如何在ModelAdmin中使用InlinePanel?

    我正在设置一个需要使用多个子模型实例创建的模型 我希望能够在管理界面中编辑和创建此模型 因此我使用以下命令添加它ModelAdmin http docs wagtail io en v1 9 reference contrib modela
  • PHP 5.5中的password_hash函数

    我有以下函数 可以对密码进行哈希处理并将其存储在数据库中 我正在尝试使用 php 5 5 中的password hash 函数 但它给了我奇怪的结果 function hashpass password include includes c
  • 在 SugarCRM 中,将帐户所有权转让给其他用户不会更新联系人所有权

    我正在使用 SugarCRM v6 x 并发现当将帐户所有权转移给新的销售代表 分配的用户 ID 字段 时 联系人和其他相关子记录也不会转移 这是 SugarCRM 作者的实际设计选择吗 如果是 其背后的原因是什么 是否有推荐的帐户转移方法
  • Android 数字格式不知为何是错误的,我得到的不是 3.5,而是 3.499999999,为什么?

    我将一些数据存储在数据库中 然后使用游标读取这些数据 所有数据均为 56 45 3 04 0 03 类型 即小数点后两位 现在我想对它们求和 但这似乎并不容易 我得到这些数字c getDouble 3 然后我将它添加到 sum 变量中 如下
  • iOS 信号处理程序可以轻松收集哪些原因信息?

    我正在尝试向应用程序添加一些崩溃日志记录 并且我有一个signal设置处理程序以捕获标准 致命 信号 我可以在信号处理程序中实际 简单地收集哪些 原因 信息 如果有 以进行记录 我花了大约 2 小时谷歌搜索内容 但我找到的大部分内容都是针对
  • Java多线程和安全发布[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 看完之后 Java并发实践 http jcip net and OSGI 实践 http neilbartlett name blog osgi
  • PayPal API 监听器网站支付标准 URI

    PayPal IPN 指南文档说得很清楚 将请求发布到 www paypal com 或 www sandbox paypal com 具体取决于您是要在沙盒中上线还是测试您的侦听器 等待 PayPal 的响应 该响应要么已验证 要么无效
  • 在 MVC 中重用 WPF ViewModel 是否可行?

    我们有一个用 WPF WCF 编写的富客户端应用程序 并打算在 ASP net 中创建一个配套网站 如果可能 使用 MVC 我被要求弄清楚我们当前的代码库中有多少是可以重用的 由一个单独的团队 而且我对 ASP net 几乎没有经验 我们将
  • CSS 中的圆帽下划线

    你能用 CSS 制作圆形下划线 如上图所示 吗 如何 有没有办法做到这一点border bottom border radius相反 会产生这种时尚的效果 编辑 我误解了皮克想要什么 但这应该有效 test font size 50px b
  • 根据条件过滤数据集

    我正在使用 asp net 2 0 和 c 我有一个数据集 正在获取员工信息 现在我想根据用户在搜索文本框中输入的名称来过滤网格视图 我正在这样做 DataSet ds new DataSet EmployeeInformation loa
  • 使用VBA从Zip中删除一些特定文件[重复]

    这个问题在这里已经有答案了 在完整的宏观过程中 我正在创建一个Zip的文件Folder 该文件夹有多个子文件夹和文件 使用此代码 Dim oApp As Object NewZip s path acc name zip Set oApp
  • ORA-02289: 序列不存在,hibernbate 中出错

    ORA 02289 序列不存在 hibernbate 中出错 在 Oracle 中 您无法自动生成值 您应该创建一个序列 我们称之为 VEHICLE SEQ 然后你应该把这个注释放在你的 id 上 GeneratedValue strate
  • 在 fork() 之后寻求有关“文件描述符”的简单描述

    Unix 环境中的高级编程 第二版 作者 W Richard Stevens 第 8 3 节 fork 函数 描述如下 父级和子级共享相同的文件偏移量非常重要 考虑一个分叉子进程 然后等待子进程完成的进程 假设两个进程都写入标准输出作为其正
  • 使用选择器获取最接近的父元素(不包括当前元素)

    我正在尝试获取元素的最接近的父元素 看着 closest https developer mozilla org en US docs Web API Element closest 如果选择器与元素匹配 它似乎会返回元素本身 Closes