Необходимость обернуть элемент в другой элемент не редкость, поэтому jQuery, конечно же, предлагает простой вариант реализации задачи.
Для этого следует использовать метод wrap.
При этом у метода есть два варианта.
Первый предполагает передачу в качестве параметра строки — тега, в который нужно облачить блок. Например:
$('#some-div').wrap('');
Приведенный код обернет #some-div в div.wrapper-for-some-div.
Второй — даёт больше возможностей и позволяет передать в качестве аргумента не строку, а анонимную функцию, внутри которой можно произвести дополнительные дейтсвия. На практике — это действительно очень удобно.
Например:
$('#some-div').wrap(function(){
if( $('#cart .cart-item').length ){
return '';
}else{
return '';
}
});
Приведенный код эмулирует ситуацию, когда блок надо не просто обернуть в блок, но и учесть при этом наличие условных позиций в корзине. Так, если в корзине (#cart) есть элементы (.cart-item) — блок обернется в div.wrap-for-non-empty-cart, в противном случае — в div.wrap-for-empty-cart.
Надеюсь мне удалось понятно обьяснить различие между методами и специфику их использования. На этом всё — удачи, Друзья!