[英]How can I get the contents of a div correctly?
以下是帶有一些HTML代碼的div:
<div id="MyDiv" contentEditable="true">
<p>This is the first P</p>
<p id="MyPId">
<ol>
<li>Text 1</li>
<li>Text 2</li>
</ol>
</p>
</div>
在運行時,我需要HTML代碼。 但是就像在DIV中一樣,正確! 下面的東西給我一個錯誤的結果DEMO :
var MyHTML = $('#MyDiv').html();
alert( MyHTML );
結果如下:
<p>This is the first P</p>
<p id="MyPId">
</p><ol>
<li>Text 1</li>
<li>Text 2</li>
</ol>
<p></p>
仔細觀察,這不是我以前在DIV中的代碼,而且也缺少“ p”。 任何想法? 謝謝。
這與jQuery無關,不是bug, p
元素不能包含ol
或ul
子元素。 p
元素只能具有短語內容 。 當涉及到ol
元素時,瀏覽器本身會關閉p
元素。
innerHTML
是元素的已解析 HTML內容的字符串表示形式。 表單元素具有defaultValue
( textarea
, input[type=text]
,...), defaultChecked
( input[type=checkbox]
)和其他類似的屬性,用於存儲一些與表單相關的值,但其他元素則不是這種情況,即沒有defaultInnerHTML
或類似屬性。
一種可能的解決方案是通過AJAX獲取元素的內容,因此您將擁有原始的html而不是經過解析的html。 請注意,在解析后(通過設置innerHTML
),您將獲得相同的結果。
$.ajax({
url: '/path/to/a/resource',
}).done(function(originalHTMLReturnedByTheRequest) {
//
});
另一種駭人聽聞的方法是使用具有未知 type
屬性或隱藏input
的script
標簽。 通過使用瀏覽器未知的type
屬性,可以防止對script
標簽的解釋:
<script id="originalHTML" type='whatever'>
<p>This is the first P</p>
<p id="MyPId">
<ol>
<li>Text 1</li>
<li>Text 2</li>
</ol>
</p>
</script>
JavaScript:
var defaultContent = $('#originalHTML').html();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.