首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用cheerio展开子元素?

如何使用cheerio展开子元素?
EN

Stack Overflow用户
提问于 2016-05-04 10:31:29
回答 2查看 3.2K关注 0票数 4

我正在使用node.js。

我正在使用cheerio解析器来读取html文档。

在这个例子中

代码语言:javascript
运行
复制
 <div class="a b c">
      <a id="ddd"/>
      sample
 </div>

我试过这个

代码语言:javascript
运行
复制
  var cheerio = require('cheerio');
  var c$ = cheerio.load(/*html content*/);
  var cntext = c$('div').html();

cntext包含所需的div及其所有子级。

如何删除div并只保留子节点?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-11 23:00:05

带有jquery的简单解决方案

只需使用$(HTML_SSTRING_VAR)将其转换为html元素即可创建html,并使用.html()函数获得innerHTML,如第一种情况所示

代码语言:javascript
运行
复制
var s=$( "#Div" ).html();
var temp=$(s);
alert(temp.html());
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div id="Div">
 
<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>
  </div>

最简单纯javascript解决方案

只需在最后一次出现"<“和第一次出现">”之间找到子字符串,这将是假设本机javscript函数应该完美工作的内容。

Javscript子字符串函数文档

代码语言:javascript
运行
复制
var s=$( "#Div" ).html();
s = s.substring(s.indexOf(">")+1,s.lastIndexOf("<")-1);
alert(s);
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div id="Div">

<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>
  </div>

是另一个简单的方法,

只需创建一个div,在其中追加html内容,并在我们传递要消除的div的过程中,以子div的innerHTML形式访问所需的内容。

innerHTML文档

儿童文献

代码语言:javascript
运行
复制
var s=$( "#Div" ).html();
var temp = document.createElement('div');
temp.innerHTML = s;
alert(temp.children[0].innerHTML);
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div id="Div">

<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>
  </div>

.unwrap()Returns: jQuery描述:从DOM中移除匹配元素的父级,将匹配的元素保留在它们的位置上。.unwrap()文档

一把小提琴

票数 1
EN

Stack Overflow用户

发布于 2016-05-09 07:48:28

您需要选择div,依赖选择器方法,以及节点的特定属性来区分所需的div和所有其他属性。

$('div[class="a b c"]')

请参阅https://github.com/cheeriojs/cheerio#selectors

您需要迭代所选div的直接子级,

$('div[class="a b c"]').children().each(fn)

请参阅https://github.com/cheeriojs/cheerio#childrenselector

你需要把每个孩子都移到div之后

代码语言:javascript
运行
复制
$('div[class="a b c"]').children().each(function(index, element){
  $(element).insertAfter($(element).parent());
})

请参阅https://github.com/cheeriojs/cheerio#each-functionindex-element-

您需要删除空的div

$('div[class="a b c"]').remove()

请参阅https://github.com/cheeriojs/cheerio#remove-selector-

飞来飞去地写着,告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37025163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档