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
全局中部横幅
老唐笔记

老唐笔记,分享便宜VPS优惠,VPS测评,域名优惠码,VPS教程,建站教程,便宜香港VPS,美国VPS,DeepSeek教程,搬瓦工、Vultr、Hostwinds、腾讯云优惠信息。

微热点(微舆情)官方网站(wrd.cn)

微热点基于海量媒体数据,专注帮助政府、企业、媒体以及自媒体从业者,发现正在发生或潜在发生的全网热点,致力于打造热点发现-热点分析-传播效果评估-热点事件案例库的媒体传播大数据应用平台。

知乎

知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于2011年1月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。

国家数据

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

深圳新闻网

深圳新闻网是立足深圳、辐射全国的综合性区域门户网站,为用户提供新闻、视频、博客、房产、汽车、财经、健康、美食、旅游、教育、时尚、娱乐、交友等20多个频道,并拥有深圳最大的门户互动社区深圳论坛,以及深圳报业集团旗下《深圳特区报》、《深圳商报》、《深圳晚报》、《晶报》、《香港商报》、《ShenzhenDaily》等系列报刊杂志电子版

百度新闻

百度新闻是包含海量资讯的新闻服务平台,真实反映每时每刻的新闻热点。您可以搜索新闻事件、热点话题、人物动态、产品资讯等,快速了解它们的最新进展。

URLOS

基于容器技术的新一代主机管理系统,将网站、小程序和APP等应用运行在多台主机上,弹性加减硬件,单机故障不影响在线业务。

榛浜av

榛浜av,涔涔濠峰┓缁煎缂存浜娲茬,灏ょ╃簿璧婧yw193缃,涔涔ユ茬患涔涔,戒骇绮惧娆хラ,浜娲叉缇ラ╃簿suv,涔涔涔涔绮惧戒骇楹昏,ラporn,娆х┓濠峰涓棣缁煎,浜娲茬涓aaaaa,寮哄堕娼18xxxx,戒骇浜烘,涓姣¢娼璐,娆х濡℃ㄧ嚎瑙,浜哄绮惧涓轰轰9,ユュ澶澶瑙棰,璐逛汉缃绔ㄧ嚎瑙瑙棰,鸿缇コ甯妗ヨ瑙棰,涔涔浜轰汉瓒纰扮簿caoporen,戒骇涓绮惧av涓璐圭界,浜娲插戒骇绮惧娆х涔,浜虹簿涓轰轰轰腑瀛骞,璐归娓榛,娆х澶у浜xxx,缁瑁镐缁冲ゴbdsm浜娲

导航目录

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

小黑资源网

小黑资源网每天为大家更新各种实用技术教程、最新活动资讯、网络趣事、以及各种好玩的软件工具等、记得每天都要访问一下我们的网站、让生活更加精彩