首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery:如何更改标签名称?

jQuery:如何更改标签名称?
EN

Stack Overflow用户
提问于 2010-08-09 04:03:15
回答 18查看 75.5K关注 0票数 65

jQuery:如何更改标签名称?

例如:

代码语言:javascript
复制
<tr>
    $1
</tr>

我需要

代码语言:javascript
复制
<div>
    $1
</div>

是的,我会

  1. 创建DOM元素
  2. 将tr内容复制到div
  3. 从dom

中删除tr

但是我可以直接做吗?

PS:

代码语言:javascript
复制
    $(tr).get(0).tagName = "div"; 

结果为DOMException

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2010-08-09 04:08:54

您可以使用jQuery的.replaceWith()方法替换任何HTML标记。

示例:http://jsfiddle.net/JHmaV/

参考:。replaceWith

如果你想保留现有的标记,你可以使用如下代码:

代码语言:javascript
复制
$('#target').replaceWith('<newTag>' + $('#target').html() +'</newTag>')
票数 50
EN

Stack Overflow用户

发布于 2010-08-09 04:26:03

不,根据W3C规范,这是不可能的:"tagName of type DOMString,readonly“

http://www.w3.org/TR/DOM-Level-2-Core/core.html

票数 46
EN

Stack Overflow用户

发布于 2014-02-12 20:09:24

DOM renameNode()方法在哪里?

现在(2014年)没有浏览器能够理解new DOM3 renameNode method (参见also W3C)检查是否在您的浏览器上运行:http://jsfiddle.net/k2jSm/1/

所以,DOM解决方案是丑陋的,我不理解为什么(??)jQuery未实施解决方法-

纯DOM算法

  1. createElement(new_name)
  2. 将所有内容复制到新元素;replaceChild()

  • 从旧替换为新

是这样的,

代码语言:javascript
复制
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算法是一个很好的起点,

代码语言:javascript
复制
   $from.replaceWith($('<'+newname+'/>').html($from.html()));

正如其他人评论的那样,它需要一个属性副本...等等通用的..。

特定于保留属性的class,请参见http://jsfiddle.net/cDgpS/

另请参阅https://stackoverflow.com/a/9468280/287948

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3435871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档