当前位置:首页 > JavaScript

js 实现 parents

2026-03-02 07:59:53JavaScript

在 JavaScript 中,实现类似 jQuery 的 parents() 方法可以通过遍历 DOM 树来完成。以下是几种实现方式:

使用纯 JavaScript 实现 parents()

通过递归或循环遍历当前元素的父节点,直到根元素。

function parents(element, selector) {
  const parentsList = [];
  let current = element.parentNode;

  while (current && current.nodeType === 1) { // 1 表示元素节点
    if (!selector || current.matches(selector)) {
      parentsList.push(current);
    }
    current = current.parentNode;
  }

  return parentsList;
}

使用 Element.closest() 结合循环

如果需要匹配特定选择器的祖先元素,可以结合 closest 和循环实现。

function parents(element, selector) {
  const parentsList = [];
  let current = element.parentNode;

  while (current && current.nodeType === 1) {
    if (!selector || current.matches(selector)) {
      parentsList.push(current);
    }
    current = current.parentNode;
  }

  return parentsList;
}

使用递归实现

递归方式可以更简洁地遍历所有父级元素。

function parents(element, selector, result = []) {
  const parent = element.parentNode;
  if (!parent || parent.nodeType !== 1) return result;

  if (!selector || parent.matches(selector)) {
    result.push(parent);
  }
  return parents(parent, selector, result);
}

示例用法

假设有以下 HTML 结构:

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

调用 parents 方法:

js 实现 parents

const child = document.querySelector('.child');
const ancestors = parents(child, 'div'); // 获取所有 div 父元素
console.log(ancestors); // [parent, grandparent]

注意事项

  • nodeType === 1 确保只处理元素节点(跳过文本节点、注释节点等)。
  • matches 方法用于检查元素是否匹配选择器,兼容性良好。
  • 如果需要兼容旧浏览器,可以使用 matches 的 polyfill 或 msMatchesSelector

以上方法提供了灵活的方式实现 parents() 功能,可根据需求选择递归或循环实现。

标签: jsparents
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…