Javascript 可以在cheerio中选择最深的DOM子项吗?

Javascript 可以在cheerio中选择最深的DOM子项吗?,javascript,html,node.js,dom,cheerio,Javascript,Html,Node.js,Dom,Cheerio,有没有办法选择cheerio中每个分支(特别是div)中最深的子级 例如: <div id="parent"> <div> <div id="dontSelectThisSinceThereIsADeeperDiv"></div> <div> <div id="selectThis"></div> </div> </div> <div

有没有办法选择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中有没有可能做到这一点的方法?

看起来没有一个函数可以满足您的需求。但您可以通过使用不同的cheerio函数来创建自己的函数。对于递归示例(未经测试,但希望您能理解):


您想在
parent
div的分支中找到最深的一个吗?还是递归地。基本上,我希望选择我在示例中提到的所有div
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')