javascript - Cheerio js成对获取元素
问题描述
我正在尝试获取一对元素,例如我有这个文本
<div id="special">
<p>not to take</p>
<p> no to take 2</p>
<h3> h3 not take<h3>
<h2>
title1
</h2>
<p>
description1
</p>
<h2>
title2
</h2>
<p>
description2
</p>
<h2>
title3
</h2>
<p>
description4
</p>
</div>
所以我想成对得到 h2 和 p 来得到 [{h2:title1,p:description1},{h2:title2,p:description3}] 的数组,我不想拿 p (在 h2 - p“不采取”),只是 h2 和 p 我试图做的是
let title2 = $('#special').find('h2').each((index,element)=>{
let title = $(element).text()
let p = $(element).find('p')
console.log('title:',title)
console.log('p:',p)
})
但它没有找到 p 元素
解决方案
您目前正在p
元素内找到该元素,因为.find()
检查子级,但在您的情况下,<p>
标签是兄弟姐妹。.next()
对于您的情况,如果您确定下一个兄弟是<p>
具有描述的标签,则必须改用方法。检查以下代码:
let title2 = $('#special').find('h2').each((index, element)=>{
let title = $(element).text()
let p = $(element).next()
console.log('title:',title)
console.log('p:',p)
})
推荐阅读
- java - Android studio java - 在视图寻呼机内的地图片段中显示底部工作表行为
- java - Maven 依赖网络 - NoSuchMethodError
- javascript - 琐事 游戏构建快完成了,如何检查用户的猜测并返回真实的交叉引用对象索引?
- java - 生成的 Jhipster War 似乎不适用于 6.3.1(独立和 tomcat)
- javascript - 如何在jquery中获取动态表数据中文本框的值
- react-native - 在使用 Firebase 身份验证的 Expo 反应本机应用程序中添加“使用 Apple 登录”
- sql - 选择 * 不返回任何结果
- javascript - 在 AngularJS ng-repeat 中过滤“自定义值”
- inno-setup - 根据使用 IDP 首次下载的内容下载其他文件
- javascript - 控制台日志未从构造函数打印