厌倦了JavaScript的父节点遍历挑战?找到合适的祖先元素可能很棘手,尤其是在深层嵌套或动态的HTML结构中。让我们探讨closest()
方法如何简化此过程。
考虑此HTML片段:
<div data-id="123"> 点击我 </div>
使用parentNode
直接获取data-id
在按钮之后:
const button = document.queryselector(“ button”); button.AddeventListener(“单击”,(EVT)=> { console.log(evt.target.parentnode.dataset.id); //打印“ 123” });
但是,这种方法失败了,筑巢更复杂:
<div data-id="123"> <div> <h1 id="一些标题">一些标题</h1> <button>点击我</button> </div> </div>
链接多次parentNode
是繁琐且无法实现的。循环while
涉及的较旧的解决方案:
函数getParentNode(el,tagName){ while(el && el.parentnode){ el = el.parentnode; if(el && el.tagname === tagname.touppercase()){ 返回el; } } 返回null; }
功能性虽然不灵活,并且不处理超越标签名称的选择器。 jQuery的.closest()
提供了一个出色的解决方案,但是为单个功能添加库通常是过度的。
输入Element.closest()
本地Element.closest()
方法提供了一个优雅的解决方案:
const button = document.queryselector(“ button”); console.log(button.closest(“ div”)); //返回<div> 元素<p><code>closest()</code>向上遍历DOM,直到找到符合提供的选择器的祖先为止。此选择器可以是任何有效的CSS选择器:ID,类,属性或标签名称。</p> <pre class="brush:php;toolbar:false"> element.closest(“#my-id”); //工作 element.closest(“。my-class”); //工作 element.closest(“ [data-id]”); //工作
如果找不到匹配的祖先, closest()
返回null
。这使有条件的检查变得容易:
const button = document.queryselector(“ button”); if(button.closest(“。my-class”)){ console.log(“找到!”); } 别的 { console.log(“找不到!”); }
现实世界应用
- 下拉次数:检测到下拉菜单外的单击以关闭它:
// ...(事件处理代码)... 如果(!evt.target.closest(“。菜单dropdown”)){ //关闭下拉 }
- 表:与这些行中的按钮交互时,从表行中检索数据属性:
功能getUserid(target){ 返回target.closest(“ [data-userid]”)。dataset.userid; }
- 反应表:与上述相似,但在一个反应组件中:
功能handleclick(evt){ const userId = evt.currenttarget.closest(“ [data-userid]”)。dataset.userid; // ... }
- 模态:单击模式内容外关闭模式:
// ...(事件处理代码)... 如果(!evt.target.closest(“。modal-inner”)){ //关闭模态 }
浏览器支持
Element.closest()
享有出色的浏览器支持,不包括旧版本的Internet Explorer。这使其成为大多数项目的安全可靠选择。
Element.closest()
提供了一种简洁有效的方法来导航DOM层次结构,从而消除了许多常见场景中对复杂循环或外部库的需求。它的多功能性和广泛的浏览器支持使其成为任何JavaScript开发人员的宝贵工具。
以上是JavaScript最近距离()方法的实际用例的详细内容。更多信息请关注PHP中文网其他相关文章!

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版
好用的JavaScript开发工具

记事本++7.3.1
好用且免费的代码编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版
中文版,非常好用