当前位置:首页 > 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验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…