爲什麼不能正常工作?jQuery .after不會插入<body>元素
var newbody = "<body><div>hello</div></body>";
$("body").remove();
$("head").after(newbody);
畢竟,我得到的是:
</head>
<div>hello</div>
我怎樣才能得到它停止下探身體標記?
爲什麼不能正常工作?jQuery .after不會插入<body>元素
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);
工作演示:http://jsfiddle.net/3dSN4/ (顯示它與類名稱一起工作)
所有人都說,我真的沒有任何理由去除和創建在一個新的身體元素。您只需以所需的方式操作現有的body元素,以最大限度地減少由於刪除正文而導致的任何潛在的瀏覽器問題。
var newbody = "<body><div>hello</div></body>";
$("body").html("");
$("body").append(newbody);
或更好..
var newbody = "<body><div>hello</div></body>";
$("body").replaceWith(newbody);
你爲什麼要做'$(「body」)。remove()'? – thirtydot 2011-06-03 11:39:38
你爲什麼想要解開你的頁面? – BoltClock 2011-06-03 11:41:11
@BoltClock一個HTML頁面的柏拉圖式二元論以前沒有出現過,但它絕對令人不安... – lonesomeday 2011-06-03 11:42:55