I have this HTML:
<ul>
<div>
<li>a</li>
<li>b</li>
<li class="break">c</li>
<li>d</li>
<li>f</li>
</div>
</ul>
What I want is where class="break" I want the parent div closed and a new one opened so I end up with this:
<ul>
<div>
<li>a</li>
<li>b</li>
</div>
<div>
<li>c</li>
<li>d</li>
<li>f</li>
</div>
</ul>
Now I’ve tried this:
$(".break").before("</div><div>");
but jQuery doesn’t act as I’d expect and instead rewrites what I have entered and puts an empty div instead. Like so:
<ul>
<div>
<li>a</li>
<li>b</li>
<div></div>
<li class="break">c</li>
<li>d</li>
<li>f</li>
</div>
</ul>
So how can I achieve what I am after?
Assuming you have the following markup:
And you want to transform it into:
You can use nextAll() with andSelf() to get the elements you want to move, then create a new
<ul>and use append() to relocate the elements:You can see the results in this fiddle.