Ich habe etwas einfaches HTML, das ich brauche, um einfache Formatierungen zu entfernen.
A nice house was found in <b>Toronto</b>.
Ich muss den Fettdruck entfernen, aber den Satz intakt lassen.
Wie ist das in jQuery möglich?
$('b').contents().unwrap();
Dies wählt alle <b>
Elemente, dann verwendet.contents()
den Textinhalt der zielen <b>
, dann.unwrap()
die Mutter entfernen <b>
Element.
Für die beste Leistung gehen Sie immer einheimisch:
var b = document.getElementsByTagName('b');
while(b.length) {
var parent = b[ 0 ].parentNode;
while( b[ 0 ].firstChild ) {
parent.insertBefore( b[ 0 ].firstChild, b[ 0 ] );
}
parent.removeChild( b[ 0 ] );
}
Dies ist viel schneller als jede hier bereitgestellte jQuery-Lösung.
unwrap()
und konnte mich nicht erinnern, wie ich den Textteil bekommen sollte, vergessen.contents()
- ausgezeichnet..replacewith()
der zusätzlichen DOM-Durchquerung auch ziemlich langsam ... Wenn es sich um ein<b>
Tag mit nur HTML handelt, wird es noch schneller.parent.normalize()
nach hinzugefügtparent.removeChild(...
, um benachbarte Textknoten zusammenzuführen. Dies war hilfreich, wenn Sie die Seite kontinuierlich ändern.Sie können auch Folgendes verwenden
.replaceWith()
:Oder wenn Sie wissen, dass es nur eine Zeichenfolge ist:
Dies kann einen großen Unterschied machen, wenn Sie viele Elemente auspacken, da jeder der oben genannten Ansätze erheblich schneller ist als die Kosten von
.unwrap()
.quelle
Der einfachste Weg, innere HTML-Elemente zu entfernen und nur Text zurückzugeben, wäre die Funktion JQuery .text () .
Beispiel:
jsFiddle Demo
quelle
Wie wäre es damit?
In der ersten Zeile wird der HTML-Inhalt des
b
Tags direkt nach demb
Tag an den Speicherort kopiert , in der zweiten Zeile wird der entferntb
kopiert. In Tag aus dem DOM entfernt, wobei nur der kopierte Inhalt übrig bleibt.Normalerweise verpacke ich dies in eine Funktion, um die Verwendung zu vereinfachen:
Der gesamte Code ist tatsächlich reines Javascript. Die einzige JQuery, die verwendet wird, ist die Auswahl des zu zielenden Elements (das
b
Tag im ersten Beispiel). Die Funktion ist nur reines JS: D.Schauen Sie sich auch an:
quelle
quelle
Eine andere native Lösung (in Kaffee):
Ich weiß nicht, ob es schneller als die Lösung von user113716 ist, aber für einige ist es möglicherweise einfacher zu verstehen.
quelle
Die einfachste Antwort ist umwerfend:
OuterHTML wird bis zu Internet Explorer 4 unterstützt!
Hier ist es mit Javascript auch ohne jQuery zu tun
Dies sollte in allen gängigen Browsern einschließlich des alten IE funktionieren. Im aktuellen Browser können wir sogar forEach direkt auf der Knotenliste aufrufen.
quelle