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