为什么这不起作用?
var newbody = "<body><div>hello</div></body>";
$("body").remove();
$("head").after(newbody);
之后我得到的是:
</head>
<div>hello</div>
我怎样才能让它停止删除正文标签?
最佳答案
这是因为 jQuery 的 HTML 插入函数如何与 before()
配合使用和after()
。 IIRC,他们创建一个临时元素并设置 innerHTML
在将元素传输到它们应该所在的位置之前,先检查新创建的元素的位置。自 <body>
标签只能是 <html>
的子标签元素,主要浏览器将其从源中删除。但是,当您将元素附加到 <html>
时元素,一个新的<body>
无论如何,元素应该是隐含的。
如果您不确定,您可以使用标准 DOM 函数 createElement()
创建主体并使用 append()
将元素添加为 html()
的子元素:
var newbody = document.createElement("body");
$(newbody).html("<div>hello</div>");
$("body").remove();
$("html").append(newbody);
Working demo: http://jsfiddle.net/3dSN4/ (shows it working with a class name)
综上所述,我确实没有任何理由要删除并创建新的 body 元素。您应该以所需的方式操作现有的 body 元素,以尽量减少因删除 body 而引起的任何潜在的浏览器问题。
关于jQuery .after 不会插入 <body> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6226623/