I’ll throw in my solution
$('.div2:parent').each(function () {
$(this).insertBefore($(this).prev('.div1'));
});
Edit: Doesn’t work for whitespace in div2. Here’s an updated solution:
$('.div2').each(function () {
if (!$(this).text().match(/^\s*$/)) {
$(this).insertBefore($(this).prev('.div1'));
}
});