JavaScript 中closest 方法使用示例详解_javascript技巧

closest方法属于Element接口,作用是从当前元素开始,向上遍历其自身及所有祖先元素,直到找到第一个匹配指定 CSS 选择器的元素。如果遍历完所有元素都没有找到匹配的,该方法将返回null。简单来说,closest方法就像是一个 “查找器”,能快速定位到符合条件的最近祖先元素。

closest方法的语法非常简洁:

通过 JavaScript 代码来使用closest方法:

const btn = document.getElementById('btn');// 查找最近的class为child的祖先元素const closestDiv = btn.closest('.child');console.log(closestDiv);

在这个例子中,按钮元素通过closest('.child')找到了最近的class为child的父级元素,并将其打印出来。

当选择器匹配当前元素本身时,closest方法会返回当前元素。例如:

Hello World

const myElement = document.getElementById('myElement');// 查找自身元素(元素本身匹配selector)const closestSelf = myElement.closest('.child');console.log(closestSelf);

这里myElement.closest('.child')返回的就是myElement本身,因为它符合.child选择器。

若指定的选择器在元素的祖先中不存在,closest方法会返回null。示例如下:

const btn = document.getElementById('btn');// 查找最近的祖先元素(匹配.nonexistent)const closestNonexistent = btn.closest('.nonexistent');console.log(closestNonexistent);

由于按钮元素及其祖先都没有.nonexistent类,所以closest()返回null。

事件委托是一种常见的 DOM 事件处理技术,它将事件监听器添加到父元素上,而不是每个子元素。这样可以减少内存占用,提高性能。closest方法在事件委托中发挥着重要作用。

例如,有一个包含多个li元素的列表:

通过closest方法实现点击li元素执行操作:

document.querySelector('ul').addEventListener('click', function (event) { const listItem = event.target.closest('li'); if (listItem) { console.log('你点击了: ' + listItem.textContent); }});

在这个示例中,无论点击li元素内的任何内容,closest('li')都能找到对应的li元素,并打印出其文本内容。

在处理动态生成的内容时,传统的事件绑定方式可能会失效,因为新添加的元素没有绑定事件。而使用closest方法结合事件委托,可以确保新元素也能正确响应事件。

假设动态添加一个按钮,点击按钮时找到其父容器:

const container = document.querySelector('.container');container.addEventListener('click', function (event) { const button = event.target.closest('.action'); if (button) { const parent = button.closest('.content'); console.log('按钮的父容器是: ' + parent); }});// 动态添加按钮const newButton = document.createElement('button');newButton.classList.add('action');newButton.textContent = '新按钮';document.querySelector('.content').appendChild(newButton);

即使是新添加的按钮,点击时也能通过closest方法找到其对应的父容器。

closest方法为 JavaScript 开发者在 DOM 操作中提供了极大的便利,无论是处理事件委托还是动态内容,都能轻松应对。

到此这篇关于JavaScript 中closest 方法详解的文章就介绍到这了,更多相关js closest方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


本文地址: https://www.earthnavs.com/jishuwz/26c3a742f2ca9d18576a.html
全局中部横幅
666资源网

666资源网提供最新最全的免费网站源码下载(公众号源码,小程序源码,php网站源码,DZ模板,帝国模板,棋牌游戏,H5网页游戏,dede模板,各种插件模板等),精品商业网站插件模版免费下载,建站教程和建站工具,为各位站长提供最新最全的的网站资源下载,打造专业的互联网精品资源为一体化的源码资源分享平台!

今日热榜官网

今日热榜提供各站热榜聚合:微信、今日头条、百度、知乎、V2EX、微博、贴吧、豆瓣、天涯、虎扑、Github、抖音...追踪全网热点、简单高效阅读。

TreeSize

该站点未添加描述description...

光明网

光明网是光明日报在网络时代的新延伸,也是国内唯一一家定位于思想理论领域的中央重点新闻网站。光明网坚持“可读、可信、可用”的办网原则,以“新闻视野、文化视角、思想深度、理论高度”为理念,努力打造“知识分子网上精神家园,权威思想理论文化网站”。

海外服务器租用

天下数据成立于2003年,已与全球120多个国家顶级机房达成战略合作关系,提供香港服务器租用、美国服务器租用、SD-WAN专线加速、高防CDN节点、DDos高防ip、站群服务器、高防服务器、韩国服务器、新加坡服务器等租用解决方案服务。

CG资源网

CG资源网内容涵盖AE模板,AE插件,AE教程,PR模板,FCPX插件,C4D插件,C4D教程,3D模型;分享Premiere,Photoshop,Realflow,Houdini,DaVinciResolve,3DsMax,Maya,Zbrush,Nuke等软件学习资源;后期VFX特效合成制作,包括实拍视频,背景素材视频,背景音乐素材;CG资源网不断汇聚更多优秀CG作品,供交流学习分享欣赏。

百度百科

百度百科是一部内容开放、自由的网络百科全书,旨在创造一个涵盖所有领域知识,服务所有互联网用户的中文知识性百科全书。在这里你可以参与词条编辑,分享贡献你的知识。

小微视频网

小微视频网,提供了影视解说,小品剧情,教育培训,软件下载,资源下载,SEO教程,网赚技术教程,分享小微视频教程门户网站。

爱收集资源网

爱收集资源网每天更新大量原创技术教程,线报活动,QQ软件等,欢迎各位小刀娱乐网的基佬访问学习,给QQ爱好者们带来一个绿色温馨快乐的娱乐家园