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
全局中部横幅
菜鸟教程

菜鸟教程(www.runoob.com)提供了编程的基础技术教程,介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP,MySQL等各种编程语言的基础知识。同时本站中也提供了大量的在线实例,通过实例,您可以更好的学习编程。..

开发者导航

程序员一站式导航平台,汇集AI工具、前端、后端、Python、Java等1000+优质开发工具

Feed

Gatherindustrynewsandinformationfromwebsites.Useformediamonitoring,RSSfeedsgeneration,contentcuration,newsfeedreading,marketintelligence,dataintegration.

广州本地宝

广州生活信息门户网站,提供广州交通、广州旅游、广州房地产、广州美食、广州购物、广州教育、广州医疗、广州招聘、广州团购、广州诚信商家等广州生活服务类权威实用资讯。

清博智能

北京清博智能科技有限公司成立于2014年,先后拥有清博指数、清博舆情、新媒体管理平台、元娲虚拟人、先问大模型五大产品,并提供舆情分析报告、新媒体管理、虚拟人、大模型定制、品牌营销、元宇宙六大优质服务,通过将AI技术赋予感知、分析和决策的能力,从而为客户提供更智能、更高效、更优质的服务。

ssl证书,SSL证书够买,SSL证书申请,增强型证书,EV

中国数字证书CHINASSL提供著名品牌SymantecSSL证书,GeoTrustSSL证书,VeriSignSSL证书,GlobalSignSSL证书,ThawteSSL证书,增强型证书,EVSSL证书,企业型证书,OVSSL证书,通配符证书,WildcardSSL,多域名证书,SAN/UCCSSL证书,ComodoSSL证书,RapidSSLSSL证书,AlphaSSLSSL证书,便宜的价格,专业的SSL证书服务,目前超过25,500+家网站选择中国数字证书CHINASSL

豆瓣电影

豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务。你可以记录想看、在看和看过的电影电视剧,顺便打分、写影评。根据你的口味,豆瓣电影会推荐好电影给你。

下载梨翱联网

下载梨翱联网融合了生活、娱乐与各类文学知识的平台,为用户带来准确且优秀的知识问答。这里有丰富的生活小知识、生活常识、娱乐资讯以及各类文学知识。其目标在于助力广大网友处理日常生活里碰到的种种问题。

导航目录

导航目录优秀网站分类目录,分享你的网站价值,提供中文网站提交,网站收录,网址大全,目录检索,网站关键字搜索功能,导航目录欢迎您登录提交网站

717收录网

717收录网是一个综合性的网络资源平台,专注于为用户提供便捷、全面的网址导航服务,同时提供自动审核提交收录功能,致力于为广大网友提供专业的互联网资源导航服务