当前位置:首页 > 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实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

使用js实现

使用js实现

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…