Где метод DOM renameNode ()?
Сегодня (2014) ни один браузер не понимает новый метод переименования DOM3 (см. также W3C )
проверьте, работает ли ваш дозаправка: http://jsfiddle.net/k2jSm/1/
Итак, решение DOM безобразно, и я не понимаю почему (??) jQuery не реализовал обходной путь?
Алгоритм чистого DOM
createElement(new_name)
- копировать весь контент в новый элемент;
- заменить старое на новое
replaceChild()
это что-то вроде этого,
function rename_element(node,name) {
var renamed = document.createElement(name);
foreach (node.attributes as a) {
renamed.setAttribute(a.nodeName, a.nodeValue);
}
while (node.firstChild) {
renamed.appendChild(node.firstChild);
}
return node.parentNode.replaceChild(renamed, node);
}
... ждать обзора и jsfiddle ...
алгоритм jQuery
Алгоритм @ilpoldo является хорошей отправной точкой,
$from.replaceWith($('<'+newname+'/>').html($from.html()));
Как прокомментировали другие, для этого нужен атрибут copy ... wait generic ...
специфично для class
, с сохранением атрибута , см. http://jsfiddle.net/cDgpS/
См. Также https://stackoverflow.com/a/9468280/287948