Пытаясь понять wrapall()

Я прочитал о wrapall() и думаю, что это может быть решением, которое мне нужно. Дайте эту структуру:

<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

Я хотел бы в конечном итоге с этой структурой:

<ul>
<div class="class1">
<li></li>
<li></li>
</div>
<div class="class2">
<li></li>
<li></li>
</div>
</ul>

Я не имею ни малейшего, как это сделать. Я прочитал несколько примеров Wrapall, но ни один из них я не могу адаптировать таким образом

2 ответа

var a = $('li');
do { $(a.slice(0,2)).wrapAll('<li class="two"><ul></ul></li>'); }
while( (a = a.slice(2) ).length>0 );

что приводит к:

<ul>
    <li class="two">
       <ul>
          <li>a1</li>
          <li>a2</li>
       </ul>
    </li>
    <li class="two">
       <ul>
         <li>b1</li>
         <li>b2</li>
       </ul>
    </li>
</ul>

Я бы предложил:

$('ul li').slice(0,2).wrapAll('<ul></ul>').closest('ul').wrap('<li />');

Что приводит к:

<ul>
    <li>
        <ul>
             <li>1</li>
             <li>2</li>
         </ul>
     </li>    
    <li>3</li>
    <li>4</li>
</ul>

JS Fiddle demo.

Другие вопросы по тегам