web-dev-qa-db-fra.com

jQuery si div contient ce texte, remplace cette partie du texte

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.

73
Daniel

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 .

134
James Allardice

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.

8
grc
var d = $('.text_div');
d.text(d.text().trim().replace(/contains/i, "hello everyone"));
7
fcalderan

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/

3
hfarazm

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

3
z33m