jQuery append () - appendChild ()


101

İşte bazı örnek kodlar:

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>

Arasındaki fark nedir append()ve appendChild()?
Herhangi bir gerçek zamanlı senaryo var mı?



Biri bir jQuery yöntemi, diğeri yerel bir JS yöntemidir, ikisi de hemen hemen aynı şeyi yapar, ancak append () birden çok öğeyi kabul eder.
adeneo

Alt kısım bir kitaplık kullanıyor (örneğin, yaygın olarak başvurulan jQuery), üst kısım ise öğeyi eklemek için "yerel" DOM ​​yöntemlerini kullanıyor.
Qantas 94 Heavy

Yanıtlar:


107

Temel fark, appendChildbir DOM yöntemi ve appendbir jQuery yöntemi olmasıdır. İkincisi, jQuery kaynak kodunda görebileceğiniz gibi birincisini kullanır

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

Projenizde jQuery kitaplığı kullanıyorsanız append, sayfaya öğe eklerken her zaman güvenli olacaksınız .


Append'in neden "güvenli" olduğunu ve appendChild'in neden olmadığını biliyor musunuz? DomManip ne yapar?
Rob Fox

2
@RobFox: güvenli derken, jquery kullanıyorsanız, her zaman eklemeyi kullanmanın güvenli olduğunu söylemeyi kastettim (DOM appendchild'in tercih edildiği bir durum yoktur). DomManip ile ilgili olarak, ana hedefin DOM DocumentFragments'ı kullanmak olduğu görülüyor. Burada yöntemin bir açıklaması var ve burada John Resig'in parçaları kullanmanın ardındaki motivasyonlar hakkındaki resmi sözüne sahipsiniz
Claudio Redi

4
javascript'in ayrıca bir de ParentNode.append(). Daha fazla bilgi için lütfen @ SagarV'ın yanıtını kontrol edin.
Jo E.

@JoE ile aynı şeyi söyleyecektim. : bkz. ParentNode.append () .
Lonnie Best

47

Artık

şimdi eklemek JavaScript'te bir yöntemdir

Ekleme yöntemiyle ilgili MDN belgeleri

MDN'den alıntı yapmak

ParentNode.appendDüğüm nesneleri ya da yöntemi, bir dizi ekler DOMStringson çocuk sonra nesneler ParentNode. DOMStringnesneler eşdeğer Metin düğümleri olarak eklenir.

Bu, IE ve Edge tarafından desteklenmez ancak Chrome (54+), Firefox (49+) ve Opera (39+) tarafından desteklenir.

JavaScript'in eki, jQuery'nin ekine benzer.

Birden çok argüman iletebilirsiniz.

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 şu anda javascript'te ne olduğunu söylemiyor, ES spesifikasyonu söylüyor
Raimonds

18

append bir öğeye bazı içerik veya HTML eklemek için bir jQuery yöntemidir.

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

appendChild alt öğe eklemek için saf bir DOM yöntemidir.

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

9

Bunun eski ve cevaplanmış bir soru olduğunu biliyorum ve oy aramıyorum, sadece yeni gelenlere yardımcı olabileceğini düşündüğüm ekstra küçük bir şey eklemek istiyorum.

yes appendChildbir DOMyöntemdir ve appendJQuery yöntemidir ancak pratikte temel fark, appendChildbir düğümü parametre olarak almasıdır , yani DOM'a boş bir paragraf eklemek istiyorsanız, pönce o öğeyi oluşturmanız gerekir

var p = document.createElement('p')

daha sonra bunu DOM'a ekleyebilirsiniz, JQuery appendbu düğümü sizin için oluşturur ve ister bir metin öğesi, ister bir html öğesi veya bir kombinasyon olsun, onu hemen DOM'a ekler!

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



0

appendChildBir saf JavaScript gibi bir yöntem appenda, jQuery yöntemi.


0

JavaScript AppendChild yöntemi başka elemana bir öğe eklemek için kullanmak olabilir. JQuery ekleme elemanı aynı işi ama kesinlikle hatlarının daha az sayıda yapar:

Listeye bir öğe eklemek için bir örnek alalım:

a) JavaScript ile

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 ile

$("#myList").append("<li>jQuery</li>")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.