Tengo el siguiente código
<b class="xyzxterms" style="cursor: default; ">bryant keil bio</b>
¿Cómo reemplazaría la b
etiqueta por una h1
etiqueta 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
children
no funcionó, perocontents
funcionó..each
bloque 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
each
ciclo).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
jQuery
sin iterar sobre los atributos:El
replaceElem
siguiente método aceptaold Tag
,new Tag
ycontext
y 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
map
crea 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