以下是我的HTML代码。
<div id="this">
<a href="xxx"> xx</a>
<a href="yy"> yy</a>
<a href="zzz"> zzz</a>
aaa
<a href="bbb"> bbb</a>
ccc
</div>
我必须得到this
div的所有孩子,即[xx,yy,zzz,aaa,bbb,ccc]
但是通过使用下面的代码,我只能获得[xx,yy,zzz,bbb]。如何访问其他2 [aaa,ccc]?
const cheerio = require('cheerio');
var $ = cheerio.load('<div id="this"> <a href="xxx"> xx</a> <a href="yy"> yy</a> <a href="zzz"> zzz</a> aaa <a href="bbb"> bbb</a> ccc </div>')
$('div#this').children().each(function(i, child){
console.log($(this).text())
})
答案 0 :(得分:1)
Element
和Text
在继承链中共享相同的父Node
(DOM4添加CharacterData
)。 Element.childNodes
为NodeList
,Element.children
为HTMLCollection
,是元素的集合。 jQuery.children
返回不带Text
s的元素集合。您可以访问原始DOM元素以获得所需内容。
答案 1 :(得分:0)
问题是[aaa,ccc]
是文本节点,不被视为子节点,您可以使用contents
而不是children
。请记住,这将返回注释节点
const cheerio = require('cheerio');
var $ = cheerio.load('<div id="this"> <a href="xxx"> xx</a> <a href="yy"> yy</a> <a href="zzz"> zzz</a> aaa <a href="bbb"> bbb</a> ccc </div>')
$('div#this').contents().each(function(i, child){
console.log($(this).text())
})