当前位置:首页 > JavaScript

js closest 实现

2026-02-01 14:51:21JavaScript

实现 closest 方法

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

js 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 函数时传入目标元素和选择器:

js closest 实现

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

兼容性处理

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

注意事项

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

标签: jsclosest
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现日历

js实现日历

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

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…