Я заметил, что первый ответ был не совсем тем, что мне было нужно, поэтому я сделал несколько изменений и решил опубликовать его здесь.
Улучшено replaceTag(<tagName>)
replaceTag(<tagName>, [withDataAndEvents], [withDataAndEvents])
Аргументы:
- tagName: String
- Имя тега, например "div", "span" и т. д.
- withDataAndEvents: Boolean
- "Логическое значение, указывающее, следует ли копировать обработчики событий вместе с элементами. Начиная с jQuery 1.4, данные элементов также будут копироваться." информация
- deepWithDataAndEvents: Boolean ,
- Логическое значение, указывающее, следует ли копировать обработчики событий и данные для всех дочерних элементов клонированного элемента. По умолчанию его значение соответствует значению первого аргумента (по умолчанию false). " info
Возвращает:
Недавно созданный элемент jQuery
Хорошо, я знаю, что здесь есть несколько ответов, но я взял на себя ответственность написать это снова.
Здесь мы можем заменить тег таким же образом, как мы используем клонирование.
Мы придерживаемся того же синтаксиса, что и .clone () с withDataAndEvents
и deepWithDataAndEvents
, которые копируют данные и события child узлов, если они используются.
Пример:
$tableRow.find("td").each(function() {
$(this).clone().replaceTag("li").appendTo("ul#table-row-as-list");
});
Источник:
$.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);
})
}
})
Обратите внимание, что не заменяет выбранный элемент, он возвращает только что созданный.