Javascript 如何获取Dom对象';它的内容包括它自己吗?

Javascript 如何获取Dom对象';它的内容包括它自己吗?,javascript,jquery,Javascript,Jquery,我希望能够获得帖子内容本身。jQuery的html()方法只返回不包含自身的内容。尝试获取父对象的html在所有情况下都不起作用,因为该对象可能有同级 这个问题的解决方案是什么 <div id="post"> <div>content</div> <div> <div></div> 内容 您可以克隆相关元素并将克隆附加到新元素。然后您可以获得新元素的HTML: var html = $("<div>

我希望能够获得帖子内容本身。jQuery的html()方法只返回不包含自身的内容。尝试获取父对象的html在所有情况下都不起作用,因为该对象可能有同级

这个问题的解决方案是什么

<div id="post">
     <div>content</div>
<div>
<div></div>

内容

您可以克隆相关元素并将克隆附加到新元素。然后您可以获得新元素的HTML:

var html = $("<div>").append($("#post").clone()).html();
var html=$(“”).append($(“#post”).clone()).html();
说明 jQuery的
html()。你能行

$("#post")[0].outerHTML
获取完整的html,但这与crosser浏览器不兼容

看看这个

您可以使用插件获得跨浏览器兼容的函数
.outerHTML()
更多信息

您可以使用
克隆
包裹在一个虚拟
div
周围,这样您就不会干扰
DOM

你可以这样试试

$('#post').clone().wrap('<div>').parent().html();
$('#post').clone().wrap(''.parent().html();
if(!Element.prototype.hasOwnProperty(“outerHTML”)){
Object.defineProperty(Element.prototype,“outerHTML”{
对,,
get:函数getOuterHTML(){
var html=this.innerHTML;
var tag=“”;
返回标签+html+closeTag;
}
});
}
如果outerHTML不存在,则应使用以下垫片。这意味着你可以

document.getElementById(“post”).outerHTML


可能是这样的:

var elem = $("#post").clone().wrap('<div>').parent().html();
var elem=$(“#post”).clone().wrap(“”).parent().html();

您为什么想要一个html元素?这是一个坏习惯。他只是想要它,这就是我们要担心的。是的,很贵,但很好,很短,一行代码。虽然对本机
outerHTML
属性的测试可能是一个很好的补充。@Raynos-为什么它很昂贵?因为只是克隆整个内容?如果是这样的话,那么最好将其包装在一个div中,并获取该内容的html字符串,这样做会更好吗?您仍然需要克隆它才能做到这一点。innerHTML也很昂贵,因为另一行代码:
$('#post').clone().wrap(''.parent().html()
通常更快-我个人使用.wrap,我通常使用从模板库生成的元素,然后调用
wrap(“”).parent().html
(我不需要克隆,因为它不在DOM中)不要使用outerHTML插件,而是提供一个outerHTML填充。抱歉,我不理解“填充”。在我的回答中,这是一个垫片。因为它与@James的答案完全相同。这是重复的。第一件事你在哪里看到重复答案应该有dowtvote???第二件事是,这和做同一件事的不同语法并不完全相同。看看其他答案,有人在我站起来后给出了完全相同的答案。。。重复的答案是噪音。他们不需要存在。你最好留下一条评论,说你也可以使用
clone.wrap(div)
而不是
div.append(clone)
会同意的,提供一个与其他答案相同的答案不应该构成否决票,只要他们解决了手头的问题!是的,由于某些原因,其他答案在我发布这一条之后才出现!!我比你早2分钟发了帖子:)是的,我不是瞎子?当我写我的答案并在JSFIDLE中摆弄时,你发布了你的答案,通常它会在不需要刷新的情况下得到更新,但由于某种原因,直到我发布了我的答案之后,你的答案才出现在我的屏幕上。这能正确地解决你的问题吗?你知道,这不是一场真正的比赛,即使有时看起来像是这样!啊。。我想我让你不高兴了。。对不起。。我只是想在这种情况下笑而已。。我的意图与竞争或任何事情无关。
var elem = $("#post").clone().wrap('<div>').parent().html();