Mam prosty kod HTML, z którego muszę usunąć proste formatowanie.
A nice house was found in <b>Toronto</b>.
Muszę usunąć pogrubienie, ale zdanie pozostawiam nietknięte.
Jak to możliwe w jQuery?
$('b').contents().unwrap();
Spowoduje to zaznaczenie wszystkich <b>
elementów, a następnie użycie.contents()
do kierowania zawartości tekstowej elementu <b>
, a następnie.unwrap()
do usunięcia jego <b>
elementu nadrzędnego .
Aby uzyskać najlepszą wydajność, zawsze wybieraj natywny:
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 ] );
}
Będzie to znacznie szybsze niż jakiekolwiek dostępne tutaj rozwiązanie jQuery.
unwrap()
i nie pamiętałem, jak zdobyć część tekstową, zapomniałem.contents()
- świetnie..replacewith()
powodu dodatkowego przechodzenia przez DOM ... jeśli jest to<b>
tag zawierający tylko HTML, robi się jeszcze szybciej.parent.normalize()
po,parent.removeChild(...
aby scalić sąsiednie węzły tekstowe. Było to pomocne, jeśli ciągle modyfikujesz stronę.Możesz także użyć w
.replaceWith()
ten sposób:Lub jeśli wiesz, że to tylko ciąg:
Może to mieć duże znaczenie, jeśli rozpakowujesz wiele elementów, ponieważ każde z powyższych rozwiązań jest znacznie szybsze niż koszt
.unwrap()
.źródło
Najprostszym sposobem usunięcia wewnętrznych elementów HTML i zwrócenia tylko tekstu byłaby funkcja JQuery .text () .
Przykład:
jsFiddle Demo
źródło
Co powiesz na to?
Pierwsza linia kopiuje zawartość HTML
b
tagu do lokalizacji bezpośrednio pob
tagu, a druga linia usuwab
tag z DOM, pozostawiając tylko skopiowaną zawartość.Zwykle pakuję to w funkcję, aby ułatwić korzystanie z:
Cały kod jest w rzeczywistości czystym Javascriptem, jedyną używaną JQuery jest to, aby wybrać element docelowy (
b
tag w pierwszym przykładzie). Funkcja to po prostu czysty JS: DSpójrz także na:
źródło
źródło
Inne natywne rozwiązanie (w kawie):
Nie wiem, czy jest szybsze niż rozwiązanie user113716, ale dla niektórych może być łatwiejsze do zrozumienia.
źródło
Najprostsza odpowiedź brzmi oszałamiająco:
externalHTML jest obsługiwany aż do Internet Explorera 4!
Tutaj można to zrobić z javascriptem, nawet bez jQuery
Powinno to działać we wszystkich głównych przeglądarkach, w tym w starym IE. w najnowszej przeglądarce możemy nawet wywołać forEach bezpośrednio na liście węzłów.
źródło