jQuery ผนวก () เทียบกับ appendChild ()


100

นี่คือโค้ดตัวอย่างบางส่วน:

function addTextNode(){
    var newtext = document.createTextNode(" Some text added dynamically. ");
    var para = document.getElementById("p1");
    para.appendChild(newtext);
    $("#p1").append("HI");
}
<div style="border: 1px solid red">
    <p id="p1">First line of paragraph.<br /></p>
</div>

อะไรคือความแตกต่างระหว่างappend()และappendChild()?
สถานการณ์แบบเรียลไทม์?



หนึ่งคือเมธอด jQuery ส่วนอีกวิธีคือวิธี JS แบบเนทีฟซึ่งทั้งสองทำในสิ่งเดียวกัน แต่ผนวก () ยอมรับหลายองค์ประกอบ
adeneo

ด้านล่างใช้ไลบรารี (เช่น jQuery ที่อ้างถึงทั่วไป) ด้านบนใช้วิธี DOM "เนทีฟ" เพื่อต่อท้ายองค์ประกอบ
Qantas 94 Heavy

คำตอบ:


106

ความแตกต่างที่สำคัญappendChildคือเป็นวิธี DOM และappendเป็นวิธี jQuery อันที่สองใช้อันแรกตามที่คุณเห็นในซอร์สโค้ด jQuery

append: function() {
    return this.domManip(arguments, true, function( elem ) {
        if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
            this.appendChild( elem );
        }
    });
},

หากคุณใช้ไลบรารี jQuery ในโปรเจ็กต์ของคุณคุณจะปลอดภัยเสมอappendเมื่อใช้เพิ่มองค์ประกอบในเพจ


คุณรู้หรือไม่ว่าเหตุใด append จึง "ปลอดภัย" และ appendChild ไม่ใช่? DomManip ทำอะไร?
Rob Fox

2
@RobFox: โดยปลอดภัยฉันตั้งใจจะบอกว่าหากคุณใช้ jquery คุณจะปลอดภัยที่จะใช้ต่อท้ายเสมอ (ไม่มีสถานการณ์ใดที่ต้องการใช้ DOM appendchild) ในความสัมพันธ์กับ domManip ดูเหมือนว่าวัตถุประสงค์หลักคือการใช้ DOM DocumentFragments ที่นี่คุณจะมีรายละเอียดของวิธีการและที่นี่คุณมีคำอย่างเป็นทางการของจอห์นเรซิกเกี่ยวกับแรงจูงใจเบื้องหลังการใช้ชิ้นส่วน
เคลาดิโอ Redi

4
javascript ยังมีไฟล์ParentNode.append(). โปรดตรวจสอบคำตอบของ @ SagarV สำหรับข้อมูลเพิ่มเติม
Jo E.

ฉันจะพูดแบบเดียวกันกับ @JoE ดูParentNode.append ()
Lonnie Best

47

ไม่อีกต่อไป

ตอนนี้ผนวกเป็นวิธีการใน JavaScript

เอกสาร MDN เกี่ยวกับวิธีการผนวก

อ้างถึง MDN

ParentNode.appendวิธีการแทรกชุดของโหนดวัตถุหรือวัตถุหลังจากที่เด็กสุดท้ายของDOMString วัตถุถูกแทรกเป็นโหนดข้อความที่เทียบเท่าParentNodeDOMString

IE และ Edge ไม่รองรับ แต่ Chrome (54+), Firefox (49+) และ Opera (39+)

ภาคผนวกของ JavaScript คล้ายกับการผนวกของ jQuery

คุณสามารถส่งผ่านหลายอาร์กิวเมนต์

var elm = document.getElementById('div1');
elm.append(document.createElement('p'),document.createElement('span'),document.createElement('div'));
console.log(elm.innerHTML);
<div id="div1"></div>


4
MDN ไม่ได้บอกว่าตอนนี้อยู่ในจาวาสคริปต์แล้วข้อกำหนด ES ทำอย่างไร
Raimonds

18

append เป็นวิธีการ jQuery เพื่อต่อท้ายเนื้อหาหรือ HTML เข้ากับองค์ประกอบ

$('#example').append('Some text or HTML');

appendChild เป็นวิธี DOM ที่บริสุทธิ์สำหรับการเพิ่มองค์ประกอบลูก

document.getElementById('example').appendChild(newElement);

9

ฉันรู้ว่านี่เป็นคำถามเก่าและมีคำตอบและฉันไม่ได้กำลังมองหาการโหวตฉันแค่ต้องการเพิ่มสิ่งเล็ก ๆ น้อย ๆ ที่ฉันคิดว่าอาจช่วยผู้มาใหม่ได้

ใช่appendChildเป็นDOMวิธีการและappendเป็นวิธีการ JQuery แต่ในทางปฏิบัติความแตกต่างที่สำคัญคือappendChildใช้โหนดเป็นพารามิเตอร์โดยที่ฉันหมายถึงถ้าคุณต้องการเพิ่มย่อหน้าว่างใน DOM คุณต้องสร้างpองค์ประกอบนั้นก่อน

var p = document.createElement('p')

จากนั้นคุณสามารถเพิ่มลงใน DOM ในขณะที่ JQuery appendสร้างโหนดนั้นให้คุณและเพิ่มลงใน DOM ได้ทันทีไม่ว่าจะเป็นองค์ประกอบข้อความหรือองค์ประกอบ html หรือการรวมกัน!

$('p').append('<span> I have been appended </span>');




0

appendchild JavaScriptวิธีจะสามารถใช้ต่อท้ายรายการที่จะเป็นอีกหนึ่งปัจจัย jQuery ผนวกองค์ประกอบไม่ทำงานเหมือนกัน แต่แน่นอนในจำนวนน้อยของสาย:

ให้เรายกตัวอย่างเพื่อต่อท้ายรายการในรายการ:

ก) ด้วย JavaScript

var n= document.createElement("LI");                 // Create a <li> node
var tn = document.createTextNode("JavaScript");      // Create a text node
n.appendChild(tn);                                   // Append the text to <li>
document.getElementById("myList").appendChild(n);  

b) ด้วย jQuery

$("#myList").append("<li>jQuery</li>")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.