You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用原生JavaScript查找含下划线字符元素的父元素

原生JavaScript实现替代jQuery的:contains父元素查找

当然有原生JS的实现方式,下面是两种实用方案,完全替代你原来的jQuery写法:

方案一:基础选择器+数组过滤

这种方法逻辑和你原来的jQuery写法最接近,步骤清晰易懂:

// 1. 获取所有.class容器下的<a>标签
const targetLinks = document.querySelectorAll('.class a');
// 2. 转成数组后过滤出文本包含"_"的元素,再映射到它们的父元素
const parentElements = Array.from(targetLinks)
  .filter(link => link.textContent.includes('_'))
  .map(link => link.parentElement);

方案二:TreeWalker高效遍历

如果页面DOM结构复杂、元素数量多,用TreeWalker可以更高效地遍历指定元素,避免不必要的DOM查询:

// 1. 先定位到目标容器
const rootElement = document.querySelector('.class');
// 2. 创建TreeWalker,只筛选符合条件的<a>标签
const walker = document.createTreeWalker(
  rootElement,
  NodeFilter.SHOW_ELEMENT, // 只遍历元素节点
  {
    acceptNode: node => {
      // 只接受<a>标签且文本包含"_"的元素
      return node.tagName === 'A' && node.textContent.includes('_') 
        ? NodeFilter.FILTER_ACCEPT 
        : NodeFilter.FILTER_SKIP;
    }
  }
);
// 3. 收集符合条件元素的父节点
const parentElements = [];
let currentNode;
while (currentNode = walker.nextNode()) {
  parentElements.push(currentNode.parentElement);
}

注意:如果需要兼容非常老的浏览器(比如IE11及以下),可以把textContent.includes('_')换成textContent.indexOf('_') !== -1,功能完全一致。

内容的提问来源于stack exchange,提问作者practice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:01:24