Remplacer / Manipuler l'élément en chaîne html en utilisant jquery

J'ai une chaîne html (pas DOM), que je veux manipuler en utilisant jquery. Pourquoi cela ne fonctionne-t-il pas?

var html = '<div><h4><a class="preview-target" href="content.html">Headline</a></h4></div>'; console.log(html); var elem = $('h4', $(html)); // replace "Headline" with "whatever" => Doesn't work elem.replaceWith("whatever"); console.log(html); 

J'ai un jsfiddle ici pour tester.

Le code ci-dessus n'est qu'un exemple simplifié. Le vrai html est beaucoup plus complexe, c'est-à-dire que je dois absolument compter sur jQuery pour manipuler la chaîne html.

Lorsque vous modifiez l'objet jQuery, il ne changera pas la valeur dans le littéral de chaîne.

Vous pouvez utiliser

 var html = '<div><h4><a class="preview-target" href="content.html">Headline</a></h4></div>'; console.log(html); var $html = $('<div />',{html:html}); // replace "Headline" with "whatever" => Doesn't work $html.find('a').html("whatever"); console.log($html.html()); 

Demo: Fiddle

Vous pouvez trouver le h4 puis appeler la méthode replaceWith.

 var html = $('<div><h4><a class="preview-target" href="content.html">Headline</a></h4></div>'); console.log(html.html()); html.find('h4').replaceWith('whatever') console.log(html.html()); 

Jsfiddle

 var html = '<div><h4><a class="preview-target" href="content.html">Headline</a></h4></div>'; var replaced=html.replace("Headline","whatever"); console.log(replaced); 

Essaye ça