Si tengo algo de HTML que tiene este aspecto:elimina etiqueta de alrededor de un nodo de texto usando 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>
Y quiero quitar el "span" dejando el nodo de texto dentro, ¿cómo voy a ir haciendo que ? Intenté usar jQuery para hacer lo siguiente:
wrap = $('.highlight');
wrap.children().insertBefore(wrap);
wrap.remove();
Pero eso no funciona supongo porque los niños devuelve un conjunto vacío ya que sólo hay un nodo de texto en ese país. Entonces, todo lo que sucede es que el lapso y su contenido se eliminan.
También estoy abierto a las alternativas a mi enfoque aquí. Lo que sucede es que mi código realmente crea ese lapso cuando un usuario selecciona un bloque de texto. Envuelve el texto seleccionado en un lapso para diferenciarlo visualmente. Sin embargo, necesito eliminar el tramo después debido a algunas peculiaridades con la forma en que funciona el objeto de rango de Mozilla.
EDITAR: No quiero reemplazar todo el contenido de '#text' por cierto, ya que podría ser muy grande.
Ah, expresiones regulares. Nunca he visto uno que no hiciera llorar a mi cerebro. Pero este es un buen enfoque. Simplemente reemplace el html interno con los resultados de una expresión regular. Me gusta. – Karim
Lo mejor es nunca usar expresiones regulares para (X) (HT) ML ya que estos no son idiomas regulares. Sin embargo, en este caso, lo anterior debería funcionar. –
-1 Esto elimina las etiquetas, pero no de la manera especificada por OP. – Imagist