Tengo el siguiente código
<b class="xyzxterms" style="cursor: default; ">bryant keil bio</b>
¿Cómo reemplazaría la betiqueta por una h1etiqueta pero conservaría todos los demás atributos e información?
javascript
jquery
bammab
fuente
fuente

Respuestas:
Aquí hay una forma en que puede hacerlo con jQuery:
Ejemplo: http://jsfiddle.net/yapHk/
Actualización , aquí hay un complemento:
Ejemplo: http://jsfiddle.net/mmNNJ/
fuente
childrenno funcionó, perocontentsfuncionó..eachbloque como se muestra en la respuesta a continuación.No estoy seguro de jQuery. Con JavaScript simple, podría hacer:
MANIFESTACIÓN
Sin embargo, no estoy seguro de qué tan compatible es esto con todos los navegadores.
Una variación podría ser:
Para obtener más información, consulte
Node.attributes[MDN] .fuente
while(child = child.nextSibling)falló. ¡Gracias!@jakov y @Andrew Whitaker
Aquí hay una mejora adicional para que pueda manejar varios elementos a la vez.
fuente
La respuesta de @ Jazzbo devolvió un objeto jQuery que contenía una matriz de objetos jQuery, que no se podía encadenar. Lo cambié para que devuelva un objeto más similar a lo que $ .each habría devuelto:
(También hice una limpieza de código para que pase jslint).
fuente
eachciclo).La única forma en la que puedo pensar es copiar todo manualmente: ejemplo jsfiddle
HTML
Jquery / Javascript
fuente
@Andrew Whitaker: Propongo este cambio:
Entonces puedes hacer cosas como:
$('<div>blah</div>').changeElementType('pre').addClass('myclass');fuente
Me gusta la idea de @AndrewWhitaker y otros, de usar un complemento jQuery, para agregar el
changeElementType()método. Pero un complemento es como una caja negra, no importa el código, si es pequeño y funciona bien ... Por lo tanto, se requiere rendimiento y es más importante que el código."Javascript puro" tiene un mejor rendimiento que jQuery: Creo que el código de @ FelixKling tiene un mejor rendimiento que el de @ AndrewWhitaker y otros.
Aquí un código "puro Javavascript" (y "puro DOM"), encapsulado en un complemento de jQuery :
fuente
Aquí hay un método que utilizo para reemplazar las etiquetas html en jquery:
fuente
Con
jQuerysin iterar sobre los atributos:El
replaceElemsiguiente método aceptaold Tag,new Tagycontexty ejecuta la sustitución con éxito:Buena suerte...
fuente
Solución javascript
Copie los atributos del elemento antiguo al nuevo elemento
Reemplazar el elemento antiguo con el nuevo elemento
fuente
mapcrea una nueva matriz sin usar, podría ser reemplazada porforEach.Aquí está mi versión. Es básicamente la versión de @ fiskhandlarn, pero en lugar de construir un nuevo objeto jQuery, simplemente sobrescribe los elementos antiguos con los recién creados, por lo que no es necesario fusionarlos.
Demostración: http://jsfiddle.net/0qa7wL1b/
fuente