Получить все последовательные DIV с определенным классом

Есть HTML как

<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.row,

Это код, который я использую

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

}

Но то, что он делает, это также царапает some text 4 Div тоже.

я пытался nextAll('div.row') также, но это дает мне тот же результат.

Так что мой вопрос, как я могу получить все подряд div.row после <h3>Specifications</h3>, если между ними появляется какой-либо другой тег, просто ОСТАНОВИТЕ.

PS:

Ответы в чистом jQuery также будут приниматься, поскольку библиотека phpQuery использует ту же функцию, что и jQuyery.

1

Решение

Вы можете использовать :first селектор, чтобы получить первый .row элемент, то nextUntil() захватить остальное. Попробуй это:

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

Если вы хотите также включить первую строку в соответствующий набор, вы можете использовать addBack(), как это:

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

Рабочий пример

1

Другие решения

JQuery:

$("h3").nextUntil("#pricing");

Захватывает все элементы после h3 пока он не достигнет этого с идентификатором pricing

0

Последовательные дивы, а? Похоже, вы хотите что-то вроде:

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

Я не знаю, поддерживает ли PHPQuery это, если нет, вы должны рассмотреть вопрос о переключении.

Другая идея состоит в том, чтобы сделать h3 + .row а затем просто продолжать итерацию + .row

0
По вопросам рекламы [email protected]