Comme le titre l'indique, je souhaite remplacer une partie spécifique du texte dans une div.
La structure ressemble à ceci:
<div class="text_div">
This div contains some text.
</div>
Et je veux remplacer uniquement "contient" par "bonjour tout le monde", par exemple. Je ne trouve pas de solution pour ça.
Vous pouvez utiliser la méthode text
et transmettre une fonction qui renvoie le texte modifié à l'aide de la méthode native String.prototype.replace
:== pour effectuer le remplacement:
_$(".text_div").text(function () {
return $(this).text().replace("contains", "hello everyone");
});
_
Voici un exemple de travail .
Si possible, vous pouvez envelopper le (s) mot (s) que vous souhaitez remplacer dans une balise span, comme suit:
<div class="text_div">
This div <span>contains</span> some text.
</div>
Vous pouvez alors facilement changer son contenu avec jQuery:
$('.text_div > span').text('hello everyone');
Si vous ne pouvez pas l'envelopper dans une balise span, vous pouvez utiliser des expressions régulières.
var d = $('.text_div');
d.text(d.text().trim().replace(/contains/i, "hello everyone"));
Très simple, utilisez ce code, il préservera le code HTML tout en supprimant uniquement le texte non enveloppé:
jQuery(function($){
// Replace 'td' with your html tag
$("td").html(function() {
// Replace 'ok' with string you want to change, you can delete 'hello everyone' to remove the text
return $(this).html().replace("ok", "hello everyone");
});
});
Voici un exemple complet: https://blog.hfarazm.com/remove-unwrapped-text-jquery/
Vous pouvez utiliser le sélecteur contient pour rechercher des éléments contenant un texte spécifique
var elem = $('div.text_div:contains("This div contains some text")');
elem.text(elem.text().replace("contains", "Hello everyone"));
Un séjour sans faille