Se ho qualche HTML che assomiglia a questo:Rimuovi tag intorno a un nodo di testo utilizzando JavaScript
<div id="text">
This is some text that is being written <span class="highlight">with
a highlighted section</span> and some text following it.
</div>
E voglio rimuovere il "span" lasciando il nodo di testo all'interno, come dovrei andare a fare che ? Ho provato ad utilizzare jQuery per effettuare le seguenti operazioni:
wrap = $('.highlight');
wrap.children().insertBefore(wrap);
wrap.remove();
Ma questo non funziona sto cercando di indovinare perché i bambini restituisce un insieme vuoto poiché c'è solo un nodo di testo in là. Quindi tutto ciò che accade è che lo span e il suo contenuto vengono rimossi.
Sono anche aperto a alternative al mio approccio qui. Quello che sta succedendo è che il mio codice crea effettivamente quell'intervallo quando un utente seleziona un blocco di testo. Incapsula il testo selezionato in un intervallo per differenziarlo visivamente. Ho bisogno di rimuovere lo span dopo, a causa di alcune stranezze nel modo in cui funziona l'oggetto range di mozilla.
EDIT: Non voglio sostituire l'intero contenuto di "#text" in quanto potrebbe essere molto grande.
Ah, le espressioni regolari. Non ne ho mai incontrato uno che non facesse piangere il mio cervello. Ma questo è un buon approccio. Basta sostituire l'html interno con i risultati di una regex. Mi piace. – Karim
È meglio non usare mai espressioni regolari per (X) (HT) ML in quanto non si tratta di lingue normali. comunque in questo caso quanto sopra dovrebbe funzionare. –
-1 Rimuove i tag, ma non nel modo specificato dall'OP. – Imagist