jQuery append () so với appendChild ()


95

Đây là một số mã mẫu:

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>

Sự khác biệt giữa append()và là appendChild()gì?
Bất kỳ kịch bản thời gian thực?



Một là phương thức jQuery, phương thức kia là phương thức JS gốc, cả hai đều làm khá nhiều thứ giống nhau, nhưng append () chấp nhận nhiều phần tử.
adeneo

Phần dưới sử dụng thư viện (ví dụ: jQuery thường được tham chiếu), phần trên sử dụng các phương thức DOM "gốc" để nối phần tử.
Qantas 94 Heavy

Câu trả lời:


104

Sự khác biệt chính là appendChildphương thức DOM và appendlà phương thức jQuery. Cái thứ hai sử dụng cái đầu tiên như bạn có thể thấy trên mã nguồn jQuery

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

Nếu bạn đang sử dụng thư viện jQuery trong dự án của mình, bạn sẽ luôn an toàn appendkhi thêm các phần tử vào trang.


Bạn có biết tại sao append là "an toàn" và appendChild thì không? DomManip làm gì?
Rob Fox,

2
@RobFox: an toàn, tôi muốn nói rằng nếu bạn đang sử dụng jquery thì bạn có thể yên tâm sử dụng luôn thêm phần mềm (không có trường hợp nào mà DOM appendchild được ưu tiên hơn). Liên quan đến domManip, có vẻ như mục tiêu chính là sử dụng DOM DocumentFragment. Ở đây bạn có một mô tả về phương pháp này và ở đây bạn có thông tin chính thức của John Resig về động cơ đằng sau sử dụng mảnh vỡ
Claudio Redi

3
javascript cũng có một ParentNode.append()bây giờ. vui lòng kiểm tra câu trả lời của @ SagarV để biết thêm thông tin.
Jo E.

Tôi sẽ nói điều tương tự như @JoE. : xem ParentNode.append () .
Lonnie Tốt nhất

46

Không còn

bây giờ append là một phương thức trong JavaScript

Tài liệu MDN về phương thức nối thêm

Trích dẫn MDN

Các ParentNode.appendphương pháp chèn một tập hợp các đối tượng Node hoặc DOMStringcác đối tượng sau khi đứa trẻ cuối cùng của ParentNode. DOMStringcác đối tượng được chèn dưới dạng các nút Văn bản tương đương.

Điều này không được hỗ trợ bởi IE và Edge nhưng được hỗ trợ bởi Chrome (54+), Firefox (49+) và Opera (39+).

Phần phụ của JavaScript tương tự như phần phụ của jQuery.

Bạn có thể chuyển nhiều đối số.

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


3
MDN không biết những gì hiện đang trong javascript, ES đặc điểm kỹ thuật thực hiện
Raimonds

17

append là một phương thức jQuery để nối một số nội dung hoặc HTML vào một phần tử.

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

appendChild là một phương thức DOM thuần túy để thêm một phần tử con.

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

9

Tôi biết đây là một câu hỏi cũ và đã được trả lời và tôi không tìm kiếm phiếu bầu. Tôi chỉ muốn bổ sung thêm một điều nhỏ mà tôi nghĩ có thể giúp ích cho người mới.

vâng appendChildlà một DOMphương thức và appendlà phương thức JQuery nhưng trên thực tế, sự khác biệt chính là appendChildlấy một nút làm tham số, ý tôi là nếu bạn muốn thêm một đoạn trống vào DOM, bạn cần tạo pphần tử đó trước.

var p = document.createElement('p')

thì bạn có thể thêm nó vào DOM trong khi JQuery appendtạo nút đó cho bạn và thêm nó vào DOM ngay lập tức cho dù đó là phần tử văn bản hay phần tử html hoặc kết hợp!

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



0

appendChildlà một tinh khiết javascript phương pháp nơi như appendlà một jQuery phương pháp.


0

Các appendChild JavaScript phương pháp có thể được sử dụng để thêm một mục để yếu tố khác. Phần tử jQuery Append hoạt động tương tự nhưng chắc chắn với số dòng ít hơn:

Hãy để chúng tôi lấy một ví dụ về Nối một mục trong danh sách:

a) Với 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) Với jQuery

$("#myList").append("<li>jQuery</li>")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.