是否有可能选择cheerio中最深的DOM孩子?

时间:2018-04-08 04:20:24

标签: javascript html node.js dom cheerio

有没有办法在cheerio中选择每个分支中最深的孩子(特别是div)?

示例:

<div id="parent">
  <div>
    <div id="dontSelectThisSinceThereIsADeeperDiv"></div>
    <div>
      <div id="selectThis"></div>
    </div>
  </div>
  <div id="selectThisAlso"></div>
  <div>
    <div id="selectThisAsWell"></div>
  </div>
</div>

基本上,我想要选择的所有div都是来自父级的“分支”中最深的。有没有办法在cheerio中做到这一点?

1 个答案:

答案 0 :(得分:1)

看起来没有一个功能可以满足您的需求。但是您可以通过使用不同的cheerio函数来创建自己的函数。对于一个递归的例子(没有经过测试,但希望你能得到这个想法):

function getLeaves(parent, result = []) {
  let children = $(parent).children()
  if(children.length > 0){
    children.each((i, elem) => getLeaves(elem, result)) 
  }else{
    result.push(parent)
  }
  return result
}

let leaves = getLeaves('#parent')