当前位置:首页 > JavaScript

js closest 实现

2026-02-01 14:51:21JavaScript

实现 closest 方法

closest 是 DOM 元素的一个方法,用于查找与当前元素匹配的选择器的最接近的祖先元素。如果原生不支持 closest,可以通过以下代码实现:

function closest(element, selector) {
  if (Element.prototype.closest) {
    return element.closest(selector);
  }

  let el = element;
  while (el) {
    if (matchesSelector(el, selector)) {
      return el;
    }
    el = el.parentElement;
  }
  return null;
}

function matchesSelector(el, selector) {
  const matches = el.matches || el.webkitMatchesSelector || el.msMatchesSelector;
  return matches.call(el, selector);
}

使用方法

调用 closest 函数时传入目标元素和选择器:

const element = document.querySelector('.child');
const closestParent = closest(element, '.parent');
console.log(closestParent);

兼容性处理

该实现首先检查浏览器是否原生支持 closest,如果不支持则手动向上遍历 DOM 树,直到找到匹配的元素或到达根元素。

注意事项

  • 确保传入的 element 是有效的 DOM 元素。
  • 选择器语法需符合标准 CSS 选择器规范。
  • 在不支持 matches 的旧浏览器中,需使用对应的前缀方法(如 webkitMatchesSelector)。

js closest 实现

标签: jsclosest
分享给朋友:

相关文章

js实现

js实现

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

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…