Imagine an unordered list:
<ul id="something">
<li class="parent">parent</li>
<li class="parent">parent</li>
<li class="child">child</li>
<li class="child">child</li>
<li class="parent">parent</li>
<li class="parent">parent</li>
<li class="child">child</li>
<li class="child">child</li>
</ul>
I want to turn the above example into:
<ul id="something">
<li class="parent">parent</li>
<li class="parent">parent</li>
<ul>
<li class="child">child</li>
<li class="child">child</li>
</ul>
<li class="parent">parent</li>
<li class="parent">parent</li>
<ul>
<li class="child">child</li>
<li class="child">child</li>
</ul>
</ul>
I've successfully done this based on a solution found here: https://stackoverflow.com/a/9023265/1447679
$('#Something').children('li.child:not(li.child + li.child)').each(function() {
$(this).nextUntil('li.parent').andSelf().wrapAll('<ul />');
});
If I don't use the :not(selector + selector) it causes strange continual embedding of ul > li > ul > li, etc.
So basically I just want to clearly understand it.