jQuery .after 不会插入 <body> 元素

标签 jquery

为什么这不起作用?

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/

相关文章:

javascript - 使用 Javascript 单击按钮读取并显示文本文件内容

jquery - jQuery colorbox 中的 HTML5 视频

php - 在 jquery 中循环显示来自 php 的值到下拉列表

jQuery 将文本转换为输入字段

javascript - AJAX精简技巧?

jquery - 我的输入类型 ="submit"没有显示?

jquery - 去除输入中的空格

javascript - jquery append()不适用于动态添加的元素

javascript - 如何使用jQuery检查当前元素之后是否存在元素?

javascript - Jquery Ajax HTML - 添加加载