2014-09-29 63 views
0

如此simple jsfiddle所示,以下代碼輸出<p>I am inner content</p>,但似乎丟棄了div標記。我錯過了什麼?爲什麼jQuery在解析html字符串時會丟棄div

var x = $('<div id="#testing"><p>I am inner content</p></div>'); 
alert(x.html()); 
+1

[獲取選定元素的外部HTML]的可能重複(http://stackoverflow.com/questions/2419749/get-selected-elements-outer-html) – 2014-09-29 05:42:02

回答

3

由於.html()回報x的innerHTML。

獲取匹配的 元素集合中第一個元素的HTML內容或設置每個匹配元素的HTML內容。

妍EED得到outerHTML

var log = (function() { 
 
    var $log = $('#log'); 
 
    return function(msg) { 
 
    $('<p/>', { 
 
     text: msg 
 
    }).prependTo($log) 
 
    } 
 
})(); 
 

 
var x = $('<div id="#testing"><p>I am inner content</p></div>'); 
 
log(x.prop('outerHTML'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="log"></div>

+0

噢,好的!如果你有時間的話,小的後續問題...爲什麼我必須使用'.prop'來獲取外部HTML? jquery是否有理由鼓勵程序員使用innerHTML?我甚至沒有看到一個官方的功能。外部鏈接 – Hamy 2014-09-29 05:43:51

+0

PS - 我會接受這一次stackoverflow允許我。我已經超時使用太多:-P – Hamy 2014-09-29 05:44:15

+0

@Hamy沒有獲取外部html的jQuery實用程序方法,它是一個dom屬性([Element.outerHTML](https://developer.mozilla.org/en- US/docs/Web/API/Element.outerHTML))... [.prop()](http://api.jquery.com/prop/)用於讀取dom元素屬性 – 2014-09-29 05:46:17

1

試試這個fiddle

var x = $('<div id="#testing"><p>I am inner content</p></div>'); 
alert(x.prop('outerHTML')); 

outerHTML類似的innerHTML,它是 包含的元素屬性打開g關閉標籤以及內容。