Как на JQuery выбрать текст между двумя тегами?

Добрый день!

У меня есть структура некоторого описания состоящая из заголовков и нескольких параграфов между заголовками. Мне надо выбрать все содержание между соседними заголовками и обернуть это содержание тегом.
1. Для чего мне это надо - один и тот же контент может отображаться в разных шаблонах. В одном из шаблонов этот текст должен отображаться в виде аккордеона: т.е. все заголовки свернуты и по щелчку раскрывается нужных раздел.
2. Если бы между тегами заголовков был бы только один абзац, то проблемы бы не было - верстальщик сделал все корректные css, но между тегами заголовков несколько абзацев...

Пример: Это есть
<h3>Заголовок 1 </h3>
     <p> Параграф 1</p>
      <p> Параграф 2</p>
      <p> Параграф 3</p>
<h3>Заголовок 2 </h3>
<h3>Заголовок 3 </h3>

а вот что надо сделать:
<h3>Заголовок 1 </h3>
   <div class="content">
         <p> Параграф 1</p>
         <p> Параграф 2</p>
         <p> Параграф 3</p>
    </div>
<h3>Заголовок 2 </h3>
<h3>Заголовок 3 </h3>


причем парсиить это на стороне сервера не хочется - шаблонов много а с аккордеоном в описании продукта только один. Менять описания продуктов тоже не хочется - продуктов много
  • Вопрос задан
  • 919 просмотров
Решения вопроса 1
iiiBird
@iiiBird Куратор тега HTML
Пока ты спишь - твой конкурент совершенствуется
если между h3 всегда p то так:

$('h3').siblings('p').wrap('<div class="content"></div>');


UPD:
$('h3').nextUntil('h3').wrap('<div class="content"></div>');


UPD2:
вот так кароче)
$('h3').each(function() {
    	$(this).nextUntil('h3').wrapAll('<div class="content"></div>');
  });

https://jsfiddle.net/duc68fmL/6/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы