I have repeating elements like this:
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
It's a dt tag followed by a dd tag, unfortunately I can't change the HTML directly, but I need to wrap a <div class="variation"> around the title and name so it looks like this:
<div class="variation">
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
</div>
<div class="variation">
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
</div>
One option would be to iterative over each dt element and then select the adjacent dd element and wrap them both using the .wrapAll() method:
$('dt').each(function() {
$(this).add($(this).next('dd')).wrapAll('<div class="variation"></div>')
});
It works because $(this) is the current dt element, and .add() will add the next dd element to the jQuery object, and .wrapAll() will wrap each element in the jQuery object.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With