J'ai remarqué que la première réponse n'était pas tout à fait ce dont j'avais besoin, j'ai donc fait quelques modifications et pensé que j'avais le poster ici.
Amélioration de la replaceTag(<tagName>)
replaceTag(<tagName>, [withDataAndEvents], [withDataAndEvents])
Arguments:
- tag: String
- Le nom de la balise par exemple, "div", "durée", etc.
- withDataAndEvents: Boolean
- "Un Booléen indiquant si les gestionnaires d'événements devrait être copiés avec les éléments. Comme de jQuery 1.4, élément de données seront copiées." info
- deepWithDataAndEvents: Boolean,
- Une valeur Booléenne indiquant si les gestionnaires d'événements et de données pour tous les enfants de l'élément cloné doivent être copiés. Par défaut, sa valeur correspond au premier argument de la valeur (qui est par défaut à false)." info
Retourne:
Nouvellement créé, l'élément jQuery
Bon, je sais, il y a quelques réponses ici maintenant, mais j'ai pris sur moi pour écrire ce nouveau.
Ici, nous pouvons remplacer le tag de la même façon que nous utilisons le clonage.
Nous sommes en suivant la même syntaxe que .clone() avec l' withDataAndEvents
et deepWithDataAndEvents
qui copie l' enfant nœuds données et des événements si utilisé.
Exemple:
$tableRow.find("td").each(function() {
$(this).clone().replaceTag("li").appendTo("ul#table-row-as-list");
});
Source:
$.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);
})
}
})
Notez que ce n'est pas de remplacer l'élément sélectionné, il retourne la nouvelle.