我已經看過How to get an HTML element from a string with jQuery - 但是,我有問題正確地複製這些結果。考慮下面這個例子:從jQuery中的HTML字符串轉換時缺少HTML元素?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<style type="text/css">
.dispnone {
display:none;
}
</style>
<script type="text/javascript">
// global var
var myHiddenHTMLstring = ""; // populate ondocready
function OnClickerClick(inbtn) {
// attempt to generate HTML from string:
var myHiddenElements = $(myHiddenHTMLstring);
console.log(myHiddenElements.html());
}
ondocready = function() {
console.log("ondocready");
myHiddenHTMLstring = $("#wrapper").html();
console.log(myHiddenHTMLstring); // looks OK
$("#clicker").click(function(){
OnClickerClick(this);
});
}
$(document).ready(ondocready);
</script>
</head>
<body>
<h1>Hello World!</h1>
<div id="wrapper" class="dispnone">
<table id="table1">
<tr>
<th> AH </th>
<th> BH </th>
<th> CH </th>
<th> DH </th>
<th> EH </th>
</tr>
<tr>
<td> A1 </td>
<td> B1 </td>
<td> C1 </td>
<td> D1 </td>
<td> E1 </td>
</tr>
</table>
<table id="table2">
<tr>
<th> HA </th>
<th> HB </th>
<th> HC </th>
<th> HD </th>
<th> HE </th>
</tr>
<tr>
<td> A2 </td>
<td> B2 </td>
<td> C2 </td>
<td> D2 </td>
<td> E2 </td>
</tr>
</table>
</div>
<button id="clicker">Click to check</button>
</body>
</html>
頁面加載時,使用我捕捉div id="wrapper"
內容:
myHiddenHTMLstring = $("#wrapper").html();
當字符串使用console.log
當時的輸出,我得到什麼預期 - 即是的div id="wrapper"
整個內HTML內容字符串:
<table id="table1">
<tbody><tr>
<th> AH </th>
<th> BH </th>
<th> CH </th>
...
<td> C2 </td>
<td> D2 </td>
<td> E2 </td>
</tr>
</tbody></table>
然而,當我按一下按鈕,我試圖把這個字符串轉換
var myHiddenElements = $(myHiddenHTMLstring);
...然後我馬上嘗試使用打印的HTML:
console.log(myHiddenElements.html());
...但是我來到這裏不是整個內部HTML內容字符串使用jQuery構建HTML元素的div id="wrapper"
- 而是,我得到這個:
<tbody><tr>
<th> AH </th>
<th> BH </th>
<th> CH </th>
<th> DH </th>
<th> EH </th>
</tr>
<tr>
<td> A1 </td>
<td> B1 </td>
<td> C1 </td>
<td> D1 </td>
<td> E1 </td>
</tr>
</tbody>
...也就是說,我只得到了第一個表內的內容,而不是讓兩個表?!
我在做什麼錯了 - 以及如何使用jQuery將HTML字符串轉換爲HTML元素,以便HTML元素包含原始HTML字符串的全部內容?
編輯:忘了說我測試了這個Firefox 43;而且我剛剛嘗試了在兩個表中都插入正確thead
和tbody
的表格 - 這也沒有幫助,仍然存在同樣的問題...
非常感謝@KWeiss - 但令我百思不解的是這樣的:當我說' $(「#wrapper」)。html()',只有一個元素,我得到它的內部HTML;但是當我說'myHiddenElements.html()'時,該字符串沒有一個根元素,它有兩個 - 所以第一個的內部HTML被採用。這是否理解正確?謝謝! – sdbbs
換句話說,要再次獲得相同的內容字符串,我不能只使用'$(string).html()' - 我必須先將'string'中的兩個表重新還原爲'div',然後要求'div.html()',這是否正確? – sdbbs
是的,這是完全正確的。 – KWeiss