当前位置:首页 > JavaScript

js 实现 parents

2026-04-05 09:04:49JavaScript

在JavaScript中,实现类似jQuery的parents()方法可以通过DOM遍历来获取目标元素的所有祖先元素。以下是几种实现方式:

js 实现 parents

使用纯JavaScript实现

通过递归或循环逐层向上查找父元素,直到文档根节点:

js 实现 parents

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

  while (current && current !== document) {
    if (!selector || current.matches(selector)) {
      parents.push(current);
    }
    current = current.parentNode;
  }

  return parents;
}

// 使用示例
const child = document.querySelector('.child');
const allParents = parents(child); // 所有祖先元素
const filteredParents = parents(child, '.target'); // 符合选择器的祖先

使用Element.closest()的变体

如果需要获取到特定选择器匹配的祖先链:

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

  while (current && current !== document) {
    if (selector && current.matches(selector)) break;
    elements.push(current);
    current = current.parentNode;
  }

  return elements;
}

兼容旧浏览器的实现

对于不支持Element.matches()的环境:

function parents(element, selector) {
  const parents = [];
  let current = element.parentNode;
  const matches = Element.prototype.matches || 
                 Element.prototype.msMatchesSelector;

  while (current && current !== document) {
    if (!selector || matches.call(current, selector)) {
      parents.push(current);
    }
    current = current.parentNode;
  }

  return parents;
}

注意事项

  • 该方法返回的节点顺序是从直接父元素到最外层祖先
  • 如果传入选择器参数,则只返回匹配选择器的元素
  • 现代浏览器推荐使用Element.closest()实现类似功能,但该方法只返回单个匹配元素

这些实现方式均避免了jQuery依赖,适合原生JavaScript项目使用。根据实际需求选择是否需要选择器过滤功能。

标签: jsparents
分享给朋友:

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现dh

js实现dh

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

js实现选题

js实现选题

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

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现跑马灯

js实现跑马灯

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