当前位置:首页 > JavaScript

js closest 实现

2026-04-06 07:39:13JavaScript

实现 closest 方法

closest 是 DOM 元素的一个方法,用于查找与当前元素匹配指定选择器的最近祖先元素(包括自身)。如果未找到匹配的元素,则返回 null

基本用法

const element = document.querySelector('.child');
const closestParent = element.closest('.parent');
console.log(closestParent); // 返回匹配的祖先元素或 null

手动实现 closest

如果需要在旧版浏览器或非标准环境中实现类似功能,可以手动编写 closest 方法:

if (!Element.prototype.closest) {
  Element.prototype.closest = function(selector) {
    let el = this;
    while (el) {
      if (el.matches(selector)) {
        return el;
      }
      el = el.parentElement;
    }
    return null;
  };
}

关键点说明

  • matches(selector) 检查当前元素是否匹配选择器。
  • parentElement 用于向上遍历 DOM 树。
  • 如果遍历到 document.documentElement<html>)仍未找到匹配元素,则返回 null

兼容性增强

如果需要支持更旧的浏览器(如 IE9 以下),可以额外实现 matches 方法:

js closest 实现

if (!Element.prototype.matches) {
  Element.prototype.matches = 
    Element.prototype.msMatchesSelector || 
    Element.prototype.webkitMatchesSelector;
}

示例

<div class="grandparent">
  <div class="parent">
    <div class="child"></div>
  </div>
</div>
const child = document.querySelector('.child');
console.log(child.closest('.parent')); // 返回 <div class="parent">
console.log(child.closest('.not-found')); // 返回 null

标签: jsclosest
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…