更改节点类型

时间:2011-07-18 03:34:41

标签: javascript jquery html dom

使用jQuery,是否可以将所有匹配的元素更改为其他类型?

例如,我可以选择所有a代码$("a"),并将其更改为input吗?

4 个答案:

答案 0 :(得分:15)

将A元素更改为INPUT元素不会更改类型,而是更改 tagName 。根据{{​​3}},元素的 tagName 是只读的,所以不,你不能设置它。

但是,您可以使用不同的元素替换元素,前提是它在DOM中有效。

答案 1 :(得分:12)

不,你实际上无法改变它,但你可以使用replaceWith()方法用新元素替换它们:

$("a").replaceWith("<input>");

如果您要保留任何属性,则需要手动设置它们:

$("a").replaceWith(function() {
    return $("<input>", {
        class: this.className,
        value: this.innerHTML
    });
});

答案 2 :(得分:1)

使用标准JavaScript的ChildNode.replaceWith()方法可以做到这一点。运行示例。

var element = document.querySelector("span");
var elementInnerHTML = element.innerHTML;
var newElement = document.createElement("h1");
newElement.innerHTML = elementInnerHTML;

element.replaceWith(newElement);
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>hightekk.com</title>
</head>
<body>
  <span>
    Hello World
  </span>
</body>
</html>

答案 3 :(得分:-2)

$("a").each( function() {
    this.replaceWith( $("<input>").html( this.innerHTML() ) );
});