当前位置:首页 > JavaScript

js实现closest

2026-04-06 23:58:02JavaScript

实现 closest 方法

closest 方法用于查找与当前元素匹配的选择器的最近祖先元素。以下是一个纯 JavaScript 的实现方式:

function closest(element, selector) {
  if (!element || !selector) return null;

  while (element) {
    if (element.matches(selector)) {
      return element;
    }
    element = element.parentElement;
  }

  return null;
}

使用示例

const childElement = document.querySelector('.child');
const parentElement = closest(childElement, '.parent');
console.log(parentElement);

兼容性处理

如果需要支持旧版浏览器,可以添加 matches 方法的 polyfill:

js实现closest

if (!Element.prototype.matches) {
  Element.prototype.matches = 
    Element.prototype.matchesSelector || 
    Element.prototype.mozMatchesSelector ||
    Element.prototype.msMatchesSelector || 
    Element.prototype.oMatchesSelector || 
    Element.prototype.webkitMatchesSelector ||
    function(s) {
      const matches = (this.document || this.ownerDocument).querySelectorAll(s);
      let i = matches.length;
      while (--i >= 0 && matches.item(i) !== this) {}
      return i > -1;
    };
}

注意事项

  • 该方法会从当前元素开始向上查找,直到找到匹配的元素或到达文档根节点。
  • 如果未找到匹配元素,返回 null
  • 确保传入有效的 DOM 元素和选择器字符串。

标签: jsclosest
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…