我有標記像jQuery中
<div id="div1">
<div id="div2">
blah blah
</div>
</div>
如果我使用$( 「#DIV1」)返回元素的HTML與元素一起,HTML(),它返回的div#DIV2。但我想獲得完整的html。即與div#div1一起。
有沒有辦法做到這一點?
我有標記像jQuery中
<div id="div1">
<div id="div2">
blah blah
</div>
</div>
如果我使用$( 「#DIV1」)返回元素的HTML與元素一起,HTML(),它返回的div#DIV2。但我想獲得完整的html。即與div#div1一起。
有沒有辦法做到這一點?
我想說盡量選擇父元素,或者其他的方法是做到這一點:
var html = $('<div>').append($('#top').clone()).remove().html();
你可以嘗試:
$('#div1')[0].outerHTML
編輯:
同樣的解決方案但沒有使用jQuery(更好的性能):
document.getElementById('div1').outerHTML
+1提供2種簡單方法。 – 2012-07-10 07:59:51
德克斯特,只要#div1沒有兄弟姐妹,這將是一個工作解決方案。添加另一個div,#div1的同級,並再次檢查 – davids 2012-07-10 08:09:21
你是正確的,我再次測試。 – 2012-07-10 08:15:52
使用.parent():
$("#div1").parent().html();
然而,這也將獲得所有兄弟姐妹的HTML。您可以將div1換成另一個div ... :)
.html()
返回innerHTML
您需要使用outerHTML。 this會很有幫助。
試試這個:http://jsfiddle.net/96u9c/3/
:)
特殊需要的功能,現在你可以使用你自己的任何目的。
justtext
將爲您帶來父母標籤的唯一文本,其中inner
版本將爲您提供兒童文本。
希望它可以幫助:)
你很可能在項目添加到您的常見的JavaScript文件或自定義,並使用它作爲您的項目的插件。
代碼
$("<div />").append($("#div1").clone()).html();
你可以創建一個簡單的jQuery插件,會爲你做的工作,讓你當它存在使用原生.outerHTML
財產,或當它沒有填充它時。
(function($) {
if('outerHTML' in document.createElement('div')) {
$.fn.outerHtml = function() {
return this[0].outerHTML;
}
}
else {
$.fn.outerHtml = function() {
return $("<div />").append(this.eq(0).clone()).html();
}
}
}(jQuery));
嘗試'$( 「#DIV1」)。父()。HTML()'。 – 2012-07-10 07:52:48
我認爲您提供的解決方案無效。想象一下,div1的父級包含多個單獨的div,它會將它們全部返回,不是嗎? – davids 2012-07-10 07:54:29
重複此:http://stackoverflow.com/questions/2419749/get-selected-elements-outer-html請參閱解決方案。 – nunespascal 2012-07-10 07:56:07