Wie entpacke ich Text mit jQuery?

Lesezeit: 3 Minuten

Wie entpacke ich mit jQUEry einen Text aus einem HTML-Tag?

Zum Beispiel, wie man diesen HTML-Code umwandelt

<p>A <i>sentence</i> with <b>bold words</b>.</p>

in (dh entfernen Sie die fetten Tags)

<p>A <i>sentence</i> with bold words.</p>

Verwenden Sie nur jQuery und keine Regex?

Wie entpacke ich Text mit jQuery
Nick Craver

Du kannst das:

  $("b").each(function() {
    $(this).replaceWith(this.childNodes);
  });

Hinweis: Dies behält den gesamten HTML-Code bei, in dem Sie sich befinden .text() könnte es verwandeln.

Wenn du buchstäblich einfach die Strippen wolltest <b></b> Sie können Cheesos Antwort in jQuery 1.4+ etwas einfacher verwenden:

$("p").html(function(i,h){ return h.replace(/<b>/g,'').replace(/</b>/g,''); }); 

  • Dies ist besonders nützlich, wenn Ankerelemente (oder andere übergeordnete Elemente) aus Text entfernt werden, der nicht in andere Elemente eingeschlossen ist, ein Fall, in dem die Unwrap-Methode nicht funktioniert. Obwohl die Methode “wrap and unwrap” für das, was ich gerade beschrieben habe, funktionieren würde, erfordert sie das Hinzufügen und den Rest von Markup wie .

    – Dominor Novus

    13. November ’12 um 16:49


Ich habe zuerst WrapInner und dann Unwrap ziemlich lieb gewonnen.

Wenn Sie beispielsweise versuchen, einen Hyperlink zu entpacken

<a id="anId" href="#">sample text</a>

dann können Sie den Hyperlink über auspacken

$('#anId').wrapInner('<span/>');
$('#anId span').unwrap();

  • Dieser Ansatz funktioniert immer noch sehr gut in Fällen, in denen Sie Teile von HTML entpacken müssen, ohne auf inner text() oder html() zu testen. Ich verwende diese Methode, um Benutzern zu ermöglichen, die Auswahl und Hervorhebung von dynamisch generiertem HTML abzubrechen.

    – Mike Clymer

    18. Januar ’18 um 20:55

Wie Sie dies tun, hängt von den zusätzlichen Einschränkungen in Ihrer Situation ab.

Es gibt keine allgemeine Möglichkeit zum Entfetten.

Wenn die Tags immer sind <b>, dann kannst du das machen

var h = $(elementSelector).html;
h = h.replace("<b>","");
h = h.replace("</b>","");
$(elementSelector).html(h);

Ich bin mir nicht sicher, warum Sie Regex nicht mögen.

  • In 1.4 können Sie auch für diesen Ansatz eine Funktion übergeben: $("p").html(function(i, h) { h = h.replace(/<b>/g,''); return h.replace(/</b>/g,''); });

    – Nick Craver

    9. März ’10 um 13:17

  • @Gaby – Einverstanden, aber wenn jemand anderes darauf stößt und diese Lösung möchte, schadet es nicht, sie zu haben.

    – Nick Craver

    9. März ’10 um 14:25

  • Technisch denke ich, dass eine reguläre string.replace() eine Regex verwendet, nicht wahr? Es ist nur so, dass ich in dieser Zeichenfolge keine Regex-Codes verwendet habe.

    – Käse

    9. März ’10 um 22:42

Wie entpacke ich Text mit jQuery
MBO

Um nur Text und nichts anderes zu entpacken, können Sie Folgendes verwenden:

$("b").replaceWith($("b").text());

$('b').contents().unwrap();

Zielen Sie auf den Inhalt des ausgewählten Elements und entpacken Sie es.

Wie entpacke ich Text mit jQuery
Mensch

Ich denke, sich in diesem Fall ausschließlich auf jQuery zu verlassen, verkompliziert die Dinge unnötig. Es wäre einfacher, die zu verwenden replace Methode, die entweder einen normalen String oder einen regulären Ausdruck akzeptiert.

Die Verwendung von Regex ist in diesem Fall im Allgemeinen der richtige Weg, da Sie mehrere Ersetzungen wünschen, die ungefähr das gleiche Muster haben.

.

227770cookie-checkWie entpacke ich Text mit jQuery?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy