2016-06-10 54 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