2016-06-10 26 views
1

有类似HTML的获取所有连续的div类特定

<h3>Specifications</h3> 
<div class="row"> some text </div> 
<div class="row"> some text 2 </div> 
<div class="row"> some text 3 </div> 
<div class="detail-anchor" id="pricing"></div> 
<div class="row"> some text 4</div> 

我使用PHP + phpQuery刮网站

我想只有前3个div的,换句话说,我想全部连续获得div.row

这是我使用

foreach (pq('h3:contains("Specifications")', $profile_page)->nextAll('div.row') as $div) { 

} 

但它做什么,它也刮掉some text 4格以及代码。

我试过nextAll('div.row'),但它给了我相同的结果。

所以我的问题是,如何在<h3>Specifications</h3>之后获得全部连续的div.row,如果有任何其他标记进入之间,那么只需停止。

PS:在纯jQuery的

答案也将被接受,因为phpQuery库使用的jQuy​​ery不相同的功能。

回答

1

您可以使用:first选择器获取第一个.row元素,然后使用nextUntil()来捕获剩余的元素。试试这个:

var $rows = $('.row:first').nextUntil(':not(.row)'); 

如果您还想包括在匹配集中的第一行,你可以使用addBack(),像这样:

var $rows = $('.row:first').nextUntil(':not(.row)').addBack(); 

Working example

+0

可悲的是,没有任何功能'nextUntil'在phpQuery库... :(有没有其他的事情,我可以做???也许正则表达式解决方案? – Umair

+0

其实我正在做网络报废,这个脚本将作为cronjob运行...所以我不能使用jquery – Umair

0

的jQuery:

​​

捕获h3之后的所有元素,直到它达到与编号pricing

+0

这是不确定是否会有一个DIV与ID定价...我想停止获得下一个div如果有任何其他标签进入 – Umair

0

连续的divs,呃?这听起来像你想要的东西,如:

div.row:has(+ div.row),div.row + div.row 

我不知道PHPQuery是否支持,如果不是你应该考虑切换。

另一个想法是做h3 + .row,然后自顾自地迭代+ .row

相关问题