访问div的直接孩子

时间:2018-02-25 08:16:12

标签: jquery html node.js dom cheerio

以下是我的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())
})

2 个答案:

答案 0 :(得分:1)

ElementText在继承链中共享相同的父Node(DOM4添加CharacterData)。 Element.childNodesNodeListElement.childrenHTMLCollection,是元素的集合。 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())
})