jQuery Wenn div diesen Text enthält, ersetzen Sie diesen Teil des Textes

78

Wie der Titel schon sagt, möchte ich einen bestimmten Teil des Textes in einem div ersetzen.

Die Struktur sieht folgendermaßen aus:

<div class="text_div">
    This div contains some text.
</div>

Und ich möchte zum Beispiel nur "enthält" durch "Hallo an alle" ersetzen. Ich kann keine Lösung dafür finden.

Daniel
quelle
Was ist, wenn der Text "Dieses Div enthält Text, der einige Buchstaben enthält" lautete und ich den ersten Text ändern möchte, nicht den zweiten. Oder wählen Sie einfach ein Wort aus und es wird durch ein vordefiniertes geändert.
stockBoi

Antworten:

145

Sie können die textMethode verwenden und eine Funktion übergeben, die den geänderten Text zurückgibt. Verwenden Sie dazu die native String.prototype.replaceMethode, um die Ersetzung durchzuführen:

​$(".text_div").text(function () {
    return $(this).text().replace("contains", "hello everyone"); 
});​​​​​

Hier ist ein Arbeitsbeispiel .

James Allardice
quelle
2
Sie können Regex / iwantreplacethis / g für alle Vorkommen verwenden
Aiphee
1
Vielen Dank dafür :) eine einfache Frage: Warum funktioniert das nicht ohne die Rückkehr
Aaron Matthews
2
@AaronMatthews Diese Antwort ist sehr lange her, aber ich glaube, das liegt daran, dass die jQuery- textMethode beim Übergeben einer Funktion den Text der Auswahl auf den Rückgabewert dieser Funktion setzt. Ohne das würde returnder Text durch nichts ersetzt.
James Allardice
12

Wenn es möglich ist, können Sie die Wörter, die Sie ersetzen möchten, wie folgt in ein span-Tag einschließen:

<div class="text_div">
    This div <span>contains</span> some text.
</div>

Sie können den Inhalt dann einfach mit jQuery ändern:

$('.text_div > span').text('hello everyone');

Wenn Sie es nicht in ein span-Tag einschließen können, können Sie reguläre Ausdrücke verwenden.

grc
quelle
8
var d = $('.text_div');
d.text(d.text().trim().replace(/contains/i, "hello everyone"));
Fabrizio Calderan
quelle
5

Sehr einfach, verwenden Sie einfach diesen Code, er behält den HTML-Code bei und entfernt nur unverpackten Text:

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");  

    });
});

Hier ist ein vollständiges Beispiel: https://blog.hfarazm.com/remove-unwrapped-text-jquery/

hfarazm
quelle
3

Mit dem Selector "Enthält" können Sie nach Elementen suchen, die einen bestimmten Text enthalten

var elem = $('div.text_div:contains("This div contains some text")')​;
elem.text(elem.text().replace("contains", "Hello everyone"));

.

z33m
quelle
Dies ersetzt mehr als ein Wort, wenn meine Zeichenfolge mehr als ein Zielwort enthält. Was ist dann?
Tamaghna Banerjee