Cheerio - 选择两个相邻的元素

Posted

技术标签:

【中文标题】Cheerio - 选择两个相邻的元素【英文标题】:cheerio - select two elements next to each other 【发布时间】:2019-09-02 01:29:11 【问题描述】:

如何选择a元素,但只有当两个相邻

<div>
 <a></a>     <---- without this one
 <irrelevant></irrelevant>
 <a></a>     <---- These two only
 <a></a>     <----
 <irrelevant></irrelevant>
 <a></a>     <---- and without these three
 <a></a>
 <a></a>
 <irrelevant></irrelevant>
 <a></a>     <---- and without this one 
</div>

【问题讨论】:

@downvoter - 想发表评论吗? 这可能会帮助您到达您需要的位置:***.com/questions/35580859/… 不是按类名称选择,而是按标签名称选择。 【参考方案1】:

我不知道cheerio,但在jQuery中你可以做到这一点(虽然它很老套而且很可怕):

$("div a").filter(function( index ) 
  var $this = $(this);
    return (
    $this.next("a").length>0 && //next is an a
    $this.next("a").next("a").length==0 &&  //next , next is not an a
    $this.prev("a").length==0 // prev is not an a
    ); 
  )
  .css( "background-color", "red" )
  .next("a")
  .css( "background-color", "red" );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
 <a>n</a> 
 <irrelevant></irrelevant>
 <a>y</a>
 <a>y</a>
 <irrelevant></irrelevant>
 <a>n</a>
 <a>n</a>
 <a>n</a>
 <irrelevant></irrelevant>
 <a>n</a>
</div>

【讨论】:

实际上在 jQuery 中你可以这样做:$('a:has("+ a"):not(:has("+ a + a"))') - 但是在 Cheerio 中这行不通。

以上是关于Cheerio - 选择两个相邻的元素的主要内容,如果未能解决你的问题,请参考以下文章

Cheerio 没有选择特定的元素

选择带有cheerio属性的元素

有没有办法选择cheerio中的每一个元素?

如何通过 Cheerio 获取 HREF 元素的选择值

Cheerio attributeStartsWith选择器

CSS相邻兄弟选择器