jQuery:如何更改标签名称?
例如:
<tr>
$1
</tr>
我需要
<div>
$1
</div>
是的,我会
中删除tr
但是我可以直接做吗?
PS:
$(tr).get(0).tagName = "div";
结果为DOMException
。
发布于 2010-08-09 04:08:54
您可以使用jQuery的.replaceWith()
方法替换任何HTML标记。
参考:。replaceWith
如果你想保留现有的标记,你可以使用如下代码:
$('#target').replaceWith('<newTag>' + $('#target').html() +'</newTag>')
发布于 2010-08-09 04:26:03
不,根据W3C规范,这是不可能的:"tagName of type DOMString,readonly“
发布于 2014-02-12 20:09:24
DOM renameNode()方法在哪里?
现在(2014年)没有浏览器能够理解new DOM3 renameNode method (参见also 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()));
正如其他人评论的那样,它需要一个属性副本...等等通用的..。
特定于保留属性的class
,请参见http://jsfiddle.net/cDgpS/
https://stackoverflow.com/questions/3435871
复制相似问题