replaceWith ferme automatiquement la balise

J’ai 3 divs et je veux remplacer le premier div avec une balise d’ouverture d’un autre div et le troisième avec la balise de fermeture. C’est ce que je voulais dire:

1
2
3

Quand j’ai essayé de remplacer (en utilisant replaceWith ()) le premier div avec

et le troisième avec

, jQuery l’a mal interprété comme:

 
2

Alors que ce que je veux réellement, c’est:

 
2

Merci d’avance,

Vous devriez travailler avec des éléments entiers plutôt que des morceaux de code HTML. Une autre façon de penser est:

 // Get the div you want var good = $('div:eq(1)'); // Remove the others $('div').not(good).remove(); // Wrap the div you want good.wrap('
');

S’il y a plusieurs divs entre le premier et le dernier, vous pouvez faire ceci:

 $('div:first').replaceWith('
'); $('div.foo').nextAll('div').appendTo('div.foo'); $('div.foo :last').remove();

Voir la démo: http://jsfiddle.net/TBMHt/