2012-07-10 55 views
0

我有標記像jQuery中

<div id="div1"> 
    <div id="div2"> 
    blah blah 
    </div> 
</div> 

如果我使用$( 「#DIV1」)返回元素的HTML與元素一起,HTML(),它返回的div#DIV2。但我想獲得完整的html。即與div#div1一起。

有沒有辦法做到這一點?

+0

嘗試'$( 「#DIV1」)。父()。HTML()'。 – 2012-07-10 07:52:48

+0

我認爲您提供的解決方案無效。想象一下,div1的父級包含多個單獨的div,它會將它們全部返回,不是嗎? – davids 2012-07-10 07:54:29

+0

重複此:http://stackoverflow.com/questions/2419749/get-selected-elements-outer-html請參閱解決方案。 – nunespascal 2012-07-10 07:56:07

回答

0

我想說盡量選擇父元素,或者其他的方法是做到這一點:

var html = $('<div>').append($('#top').clone()).remove().html(); 
3

你可以嘗試:

$('#div1')[0].outerHTML 

編輯:

同樣的解決方案但沒有使用jQuery(更好的性能):

document.getElementById('div1').outerHTML 
+0

+1提供2種簡單方法。 – 2012-07-10 07:59:51

+0

德克斯特,只要#div1沒有兄弟姐妹,這將是一個工作解決方案。添加另一個div,#div1的同級,並再次檢查 – davids 2012-07-10 08:09:21

+0

你是正確的,我再次測試。 – 2012-07-10 08:15:52

0

使用.parent():

$("#div1").parent().html(); 

然而,這也將獲得所有兄弟姐妹的HTML。您可以將div1換成另一個div ... :)

0

.html()返回innerHTML您需要使用outerHTML。 this會很有幫助。

0

試試這個:http://jsfiddle.net/96u9c/3/

:)特殊需要的功能,現在你可以使用你自己的任何目的。

justtext將爲您帶來父母標籤的唯一文本,其中inner版本將爲您提供兒童文本。

希望它可以幫助:)

你很可能在項目添加到您的常見的JavaScript文件或自定義,並使用它作爲您的項目的插件。

代碼

0
$("<div />").append($("#div1").clone()).html(); 

FIDDLE

0

你可以創建一個簡單的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)); 

一個例子是在http://jsfiddle.net/steveukx/qUEyp/