使用jQuery,是否可以将所有匹配的元素更改为其他类型?
例如,我可以选择所有a
代码$("a")
,并将其更改为input
吗?
答案 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() ) );
});