Looking for a way to wrap elements next to each other with same class in a wrapper. This can easily be done in jquery but I'm struggling to find a way in pure JS. I was able to remove empty tags between .group but not sure how to wrap those elements.
http://jsfiddle.net/chille1987/6cnjgft0/4/
Current HTML
<div class="group">1</div>
<div class="group">2</div>
<p><br /></p>
<div class="group">3</div>
<p>Lorem ipsum dolor sit amet</p>
<section>
<div class="group">4</div>
<div class="group">5</div>
</section>
<p>Lorem ipsum dolor sit amet</p>
<div class="group">6</div>
Expected HTML
<div class="wrapper">
<div class="group">1</div>
<div class="group">2</div>
<div class="group">3</div>
</div>
<p>Lorem ipsum dolor sit amet</p>
<section>
<div class="wrapper">
<div class="group">4</div>
<div class="group">5</div>
</div>
</section>
<p>Lorem ipsum dolor sit amet</p>
<div class="wrapper">
<div class="group">6</div>
</div>
Javascipt
// Create Wrapper
let wrapper = document.createElement('div');
wrapper.classList.add('wrapper');
// Add class to br parent
let brTags = document.querySelectorAll('br:first-child');
brTags.forEach(empty => {
empty.parentNode.classList.add('empty-paragraph');
});
// remove empty paragraphs between groups
const empty = document.querySelectorAll('.empty-paragraph');
empty.forEach(paragraph => {
if (paragraph.nextElementSibling.classList.contains('group') && paragraph.previousElementSibling.classList.contains('group')) {
paragraph.remove();
}
});