我希望能够将#post内容包括在内。 jQuery的html()方法只返回不包含自身的内容。想要获取父对象的html并不适用于所有情况,因为该对象可以有兄弟姐妹。
这是什么解决方案?
<div id="post">
<div>content</div>
<div>
<div></div>
答案 0 :(得分:4)
jQuery的html()
只为你提供了innerHTML权限。你可以做到
$("#post")[0].outerHTML
获取完整的html ,但这不是与crosser浏览器兼容的。
.outerHTML()
答案 1 :(得分:2)
您可以克隆有问题的元素,并将克隆附加到新元素。然后你可以得到新元素的HTML:
var html = $("<div>").append($("#post").clone()).html();
答案 2 :(得分:2)
您可以wrap
使用div
clone
围绕虚拟DOM
感染您不会打扰$('#post').clone().wrap('<div>').parent().html();
。
你可以这样尝试
{{1}}
答案 3 :(得分:1)
if (!Element.prototype.hasOwnProperty("outerHTML")) {
Object.defineProperty(Element.prototype, "outerHTML", {
configurable: true,
get: function getOuterHTML() {
var html = this.innerHTML;
var tag = "<" + this.tagName;
var closeTag = "</" + this.tagName + ">";
[].forEach.call(this.attributes, function (attr) {
tag += attr.nodeName + '="' + attr.nodeValue + '"';
});
tag += ">";
return tag + html + closeTag;
}
});
}
如果outerHTML不是precent,则以下内容应该填充它。这意味着你可以做到
document.getElementById("post").outerHTML;
答案 4 :(得分:0)