Noté que la primera respuesta no era exactamente lo que necesitaba, así que hice un par de modificaciones y pensé que la publicaría aquí.
Mejorado replaceTag(<tagName>)
replaceTag(<tagName>, [withDataAndEvents], [withDataAndEvents])
Argumentos:
- tagName: String
- El nombre de la etiqueta, por ejemplo, "div", "span", etc.
- withDataAndEvents: Boolean
- "Un booleano que indica si los controladores de eventos deben copiarse junto con los elementos. A partir de jQuery 1.4, los datos del elemento también se copiarán". informacion
- deepWithDataAndEvents: Boolean ,
- Un booleano que indica si se deben copiar los controladores de eventos y los datos para todos los elementos secundarios del elemento clonado. Por defecto, su valor coincide con el valor del primer argumento (que por defecto es falso). " Info
Devoluciones:
Un elemento jQuery recién creado
Bien, sé que hay algunas respuestas aquí ahora, pero me encargué de escribir esto nuevamente.
Aquí podemos reemplazar la etiqueta de la misma manera que usamos la clonación. Estamos siguiendo la misma sintaxis que .clone () con withDataAndEvents
y deepWithDataAndEvents
que copia los datos y eventos de los nodos secundarios si se usan.
Ejemplo:
$tableRow.find("td").each(function() {
$(this).clone().replaceTag("li").appendTo("ul#table-row-as-list");
});
Fuente:
$.extend({
replaceTag: function (element, tagName, withDataAndEvents, deepWithDataAndEvents) {
var newTag = $("<" + tagName + ">")[0];
// From [Stackoverflow: Copy all Attributes](http://stackoverflow.com/a/6753486/2096729)
$.each(element.attributes, function() {
newTag.setAttribute(this.name, this.value);
});
$(element).children().clone(withDataAndEvents, deepWithDataAndEvents).appendTo(newTag);
return newTag;
}
})
$.fn.extend({
replaceTag: function (tagName, withDataAndEvents, deepWithDataAndEvents) {
// Use map to reconstruct the selector with newly created elements
return this.map(function() {
return jQuery.replaceTag(this, tagName, withDataAndEvents, deepWithDataAndEvents);
})
}
})
Tenga en cuenta que esto no reemplaza el elemento seleccionado, devuelve el elemento recién creado.