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.


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 .


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.



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/


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

.


Dies ersetzt mehr als ein Wort, wenn meine Zeichenfolge mehr als ein Zielwort enthält. Was ist dann?
Tamaghna Banerjee
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.