Подтвердить что ты не робот

Обернуть элементы внутри div, используя jQuery

У меня есть это:

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  <p>text</p>
  ...
</div>
<div>content element</div>
<div>content element</div>

Мне нужно обернуть все p-теги внутри div следующим образом:

    <div>content element</div>
    <div class="accordionTrigger">
      <div><h1>title</h1></div>
      <div class="moreInfo">    
        <p>text</p>
        <p>text</p>
        <p>text</p>
        ...
      </div>
    </div>
    <div>content element</div>
    <div>content element</div>

это можно сделать с помощью jQuery?


Если у меня больше одного <div class="accordionTrigger"></div>, вот так:

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  ...
</div>
<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  ...
</div>

результат будет:

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
  <p>text</p>
  <p>text</p>
  <p>text</p>
  <p>text</p>
  ...
</div>
<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>
</div>

Можно ли это избежать?

4b9b3361

Ответ 1

Проверьте метод . wrapAll():

$('.accordionTrigger p').wrapAll('<div class="moreInfo"></div>');

Метод wrapAll() будет обертывать все элементы, сопоставленные в другой элемент (по сравнению с методом .wrap(), который обертывает согласованные элементы отдельно)

DEMO

Ответ 2

Проверьте, что это будет работать в соответствии с ожиданием

<div>content element</div>
<div class="accordionTrigger">
  <div><h1>title</h1></div>


  <p>text</p>
  <p>text</p>
  <p>text</p>
  <script type="text/javascript"> 
      $("p").wrapAll("<div class='moreinfo'/>"); 
  </script>
</div>
<div>content element</div>
<div>content element</div>