Ich bemerkte, dass die erste Antwort nicht ganz das war, was ich brauchte, also nahm ich ein paar Änderungen vor und dachte, ich würde sie hier zurück posten.
Verbessert replaceTag(<tagName>)
replaceTag(<tagName>, [withDataAndEvents], [withDataAndEvents])
Argumente:
- tagName: String
- Der Tag-Name zB "div", "span" usw.
- withDataAndEvents: Boolean
- "Ein Boolescher Wert, der angibt, ob Ereignishandler zusammen mit den Elementen kopiert werden sollen. Ab jQuery 1.4 werden auch Elementdaten kopiert." die Info
- deepWithDataAndEvents: Boolean ,
- Ein Boolescher Wert, der angibt, ob Ereignishandler und Daten für alle untergeordneten Elemente des geklonten Elements kopiert werden sollen. Standardmäßig entspricht der Wert dem Wert des ersten Arguments (standardmäßig false). " Info
Kehrt zurück:
Ein neu erstelltes jQuery-Element
Okay, ich weiß, dass es hier jetzt ein paar Antworten gibt, aber ich habe es auf mich genommen, dies noch einmal zu schreiben.
Hier können wir das Tag auf die gleiche Weise ersetzen, wie wir das Klonen verwenden. Wir verfolgen die gleiche Syntax wie .clone () mit der withDataAndEventsund deepWithDataAndEventsdas Kopieren Sie die Kind - Knoten Daten und Ereignisse , wenn verwendet.
Beispiel:
$tableRow.find("td").each(function() {
$(this).clone().replaceTag("li").appendTo("ul#table-row-as-list");
});
Quelle:
$.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);
})
}
})
Beachten Sie, dass dies das ausgewählte Element nicht ersetzt , sondern das neu erstellte zurückgibt.