当前位置:首页 > JavaScript

js 实现 parents

2026-03-02 07:59:53JavaScript

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

使用纯 JavaScript 实现 parents()

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

js 实现 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;
}

使用递归实现

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

js 实现 parents

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 方法:

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 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现跑马灯

js实现跑马灯

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