1. 程式人生 > >Jquery移動html到另一個標簽下

Jquery移動html到另一個標簽下

包括 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到另一個標簽下