我正在使用node.js。
我正在使用cheerio解析器来读取html文档。
在这个例子中
<div class="a b c">
<a id="ddd"/>
sample
</div>
我试过这个
var cheerio = require('cheerio');
var c$ = cheerio.load(/*html content*/);
var cntext = c$('div').html();
cntext
包含所需的div及其所有子级。
如何删除div并只保留子节点?
提前谢谢。
发布于 2016-05-11 23:00:05
带有jquery的简单解决方案
只需使用$(HTML_SSTRING_VAR)将其转换为html元素即可创建html,并使用.html()函数获得innerHTML,如第一种情况所示
var s=$( "#Div" ).html();
var temp=$(s);
alert(temp.html());
<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函数应该完美工作的内容。
var s=$( "#Div" ).html();
s = s.substring(s.indexOf(">")+1,s.lastIndexOf("<")-1);
alert(s);
<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形式访问所需的内容。
var s=$( "#Div" ).html();
var temp = document.createElement('div');
temp.innerHTML = s;
alert(temp.children[0].innerHTML);
<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()文档
发布于 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
之后
$('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-
飞来飞去地写着,告诉我。
https://stackoverflow.com/questions/37025163
复制相似问题