Jquery移動html到另一個標簽下
阿新 • • 發佈:2018-11-14
包括 pro http rip head 測試 3.3 red dev
- 需求再現
<div id="div1"> <p>這是一段測試文本001</p> </div> <div id="div2"> <p>這是一段測試文本002</p> <div id="div2_0"> <p>這是一段測試文本003</p> </div> </div>
如上,我要將id為div2_0這個div包括裏面的p標簽移動到div1裏面,移動後的html代碼如下:
<div id="div1"> <p>這是一段測試文本001</p> <div id="div2_0"> <p>這是一段測試文本003</p> </div> </div> <div id="div2"> <p>這是一段測試文本002</p> </div>
可能很容易想到用jQuery.html()這個方法實現,當然是不行的,因為jQuery.html() 是獲取當前節點下的html代碼,並不包含當前節點本身的代碼 ,比如:$("#div2_0").html();獲取到的是:<p>這是一段測試文本003</p>
- 問題解決
可以通過jQuery.prop("outerHTML");方法解決,這樣獲取到的html代碼就包含當前節點本身了。js代碼如下:
<script src="jquery/jquery-3.3.1.js"></script> <script> function moveHtml() { var outHtml = $("#div2>#div2_0").prop("outerHTML"); //獲取到Html,包括當前節點 $("#div1").append(outHtml); //追加到div1內部 $("#div2>#div2_0").remove(); //刪除原來的html } </script>
- 完整代碼
貼上我測試的完整代碼,需要導入jquery,點擊下載
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>jquery獲取html(包含當前節點的)</title> <style> #div1 { height: 200px; width: 200px; background-color: red; } #div2 { height: 100px; width: 200px; background-color: blue; } #div2_0 { height: 50px; width: 150px; background-color: green; } </style> </head> <body> <div id="div1"> <p>這是一段測試文本001</p> </div> <div id="div2"> <p>這是一段測試文本002</p> <div id="div2_0"> <p>這是一段測試文本003</p> </div> </div> <br> <br> <input type="button" value="移動html" onclick="moveHtml();" /> <script src="jquery/jquery-3.3.1.js"></script> <script> function moveHtml() { var outHtml = $("#div2>#div2_0").prop("outerHTML"); //獲取到Html,包括當前節點 $("#div1").append(outHtml); //追加到div1內部 $("#div2>#div2_0").remove(); //刪除原來的html } </script> </body> </html>
Jquery移動html到另一個標簽下