当前位置:首页 > JavaScript

js closest 实现

2026-03-14 13:46:48JavaScript

实现 closest 方法

closest 方法用于查找与当前元素匹配指定选择器的最近祖先元素。如果不存在匹配的祖先元素,则返回 null。以下是手动实现 closest 的方法:

function closest(element, selector) {
  while (element) {
    if (element.matches(selector)) {
      return element;
    }
    element = element.parentElement;
  }
  return null;
}

使用示例

假设有以下 HTML 结构:

<div class="ancestor">
  <div class="parent">
    <div class="child"></div>
  </div>
</div>

查找 .child 元素的最近 .ancestor 祖先:

const child = document.querySelector('.child');
const ancestor = closest(child, '.ancestor');
console.log(ancestor); // 输出: <div class="ancestor">...</div>

兼容性处理

如果需要支持旧版浏览器,可以添加 matches 方法的兼容性处理:

js closest 实现

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

注意事项

  • matches 方法用于检查元素是否匹配指定的选择器。
  • parentElement 属性用于获取元素的父元素。
  • 循环会一直向上查找,直到找到匹配的元素或到达文档根元素。

标签: jsclosest
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…