.append()與.appendTo()的差別

 

一、.append()

其目地為將content插入所選擇的元素裡的最未端。

有兩種多載方法

.append( content [, content ] ) content Type: htmlString or Element or Text or Array or jQuery

.append( Function function )

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        .mytest {
            color: red;
        }
    </style>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
    <h2>Greetings</h2>
    <div class="container">
        <div class="inner">Hello</div>
        <div class="inner">Goodbye</div>
    </div>
    <button>append</button>
    <script>
        $("button").click(function () {
            $(".inner").append("<div class='mytest'>Test</div>","<div class='mytest'>Test2</div>");
        });
    </script>
</body>
</html>

其.append()的意思為將內容為"<div class='mytest'>Test<div>"字串,

插入class名稱為inner元素的子層,而已是排在所有子層元素的最後一位。

<h2>Greetings</h2>
<div class="container">
    <div class="inner">
        Hello
        <div class="mytest">Test</div>
        <div class="mytest">Test2</div>
    </div>
    <div class="inner">
        Goodbye
        <div class="mytest">Test</div>
        <div class="mytest">Test2</div>
    </div>
</div>

 

來看另一個例子比較特別,

其目地為將原DOM裡的所選到的jQuery object剪下,然後插入所選擇的元素裡的最未端。

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.0.0.js"></script>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <style>
        h2 {
            background-color: red;
        }
    </style>
</head>
<body>
    <h2>Greetings</h2>
    <div class="container">
        <div class="inner">
            Hello
            <p>Test</p>
        </div>
        <div class="inner">
            Goodbye
            <p>Test</p>
        </div>
    </div>
    <script>
        $(".container").append($("h2"));
    </script>
</body>
</html>

所以該內容將會變成

<div class="container">
    <div class="inner">
        Hello
        <p>Test</p>
    </div>
    <div class="inner">
        Goodbye
        <p>Test</p>
    </div>
    <h2>Greetings</h2>
</div>

 

二、.appendTo( target ) target Type: Selector or htmlString or Array or jQuery

其目地跟.append()方法一樣,只是語法對調而已。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        .mytest {
            color: red;
        }
    </style>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
    <h2>Greetings</h2>
    <div class="container">
        <div class="inner">Hello</div>
        <div class="inner">Goodbye</div>
    </div>
    <button>append</button>
    <script>
        $("button").click(function () {
            $("<div class='mytest'>Test</div>").appendTo(".inner");
        });
    </script>
</body>
</html>

其.appendTo()的意思為將內容為"<div class='mytest'>Test<div>"字串,

插入class名稱為inner元素的子層,而已是排在所有子層元素的最後一位。

 

當執行 appendTo()  方法後,會回傳最後所插入 DOM 的 jQuery object,

所以事後有需要也可以去操作他。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <style>
        .mytest {
            color: red;
        }
    </style>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>
    <h2>Greetings</h2>
    <div class="container">
        <div class="inner">Hello</div>
        <div class="inner">Goodbye</div>
    </div>
    <button>append</button>
    <script>
        var t;
        $("button").click(function () {
            t = $("<div class='mytest'>Test</div>");
            t.appendTo(".inner");
        });        
    </script>
</body>

</html>

執行結果

 

來看另一個例子比較特別,

其目地為將原DOM裡的所選到的jQuery object剪下,然後插入所選擇的元素裡的最未端。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        .mytest {
            color: red;
        }
    </style>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
    <h2>Greetings</h2>
    <div class="container">
        <div class="inner">Hello</div>
        <div class="inner">Goodbye</div>
    </div>
    <button>append</button>
    <script>
        $("h2").appendTo($(".container"));
    </script>
</body>
</html>

所以該內容將會變成

<div class="container">
    <div class="inner">Hello</div>
    <div class="inner">Goodbye</div>
    <h2>Greetings</h2>
</div>

 

可看的出來兩者差別為

$(selector).append(content);

$(content).appendTo(selector);

但結果相同

參考資料:

.append()

.appendTo()