jQuery append () vs appendChild ()


95

Ecco un po 'di codice di esempio:

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>

Qual'è la differenza tra append()e appendChild()?
Qualche scenario in tempo reale?



Uno è un metodo jQuery, l'altro è un metodo JS nativo, entrambi fanno praticamente la stessa cosa, ma append () accetta più elementi.
adeneo

La parte inferiore utilizza una libreria (ad esempio il jQuery comunemente referenziato), la parte superiore utilizza metodi DOM "nativi" per aggiungere l'elemento.
Qantas 94 Heavy

Risposte:


104

La differenza principale è che appendChildè un metodo DOM ed appendè un metodo jQuery. Il secondo usa il primo come puoi vedere sul codice sorgente di jQuery

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

Se stai usando la libreria jQuery sul tuo progetto, sarai sempre sicuro di usarlo appendquando aggiungi elementi alla pagina.


Sai perché append è "sicuro" e appendChild no? Cosa fa domManip?
Rob Fox

2
@ RobFox: per safe intendevo dire che se stai usando jquery, puoi usare sempre append (non c'è situazione in cui DOM appendchild sia preferito). In relazione a domManip, sembra che l'obiettivo principale sia l'utilizzo di DOM DocumentFragments. Qui hai una descrizione del metodo e qui hai la parola ufficiale di John Resig sulle motivazioni alla base dell'uso dei frammenti
Claudio Redi

3
javascript ha anche un file ParentNode.append()now. si prega di controllare la risposta di @ SagarV per maggiori informazioni.
Jo E.

Stavo per dire la stessa cosa di @JoE. : vedere ParentNode.append () .
Lonnie Best

46

Non più

ora append è un metodo in JavaScript

Documentazione MDN sul metodo di aggiunta

Citando MDN

Il ParentNode.appendmetodo inserisce un insieme di oggetti o DOMStringoggetti Node dopo l'ultimo figlio di ParentNode. DOMStringgli oggetti vengono inseriti come nodi di testo equivalenti.

Questo non è supportato da IE e Edge ma supportato da Chrome (54+), Firefox (49+) e Opera (39+).

L'append di JavaScript è simile all'append di jQuery.

Puoi passare più argomenti.

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 non dice cosa c'è ora in javascript, la specifica ES lo fa
Raimonds

17

append è un metodo jQuery per aggiungere contenuto o HTML a un elemento.

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

appendChild è un metodo DOM puro per l'aggiunta di un elemento figlio.

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

9

So che questa è una domanda vecchia e con risposta e non sto cercando voti, voglio solo aggiungere una piccola cosa in più che penso possa aiutare i nuovi arrivati.

si appendChildè un DOMmetodo ed è un metodo appendJQuery ma praticamente la differenza fondamentale è che appendChildprende un nodo come parametro con ciò intendo dire che se vuoi aggiungere un paragrafo vuoto al DOM devi pprima creare quell'elemento

var p = document.createElement('p')

quindi puoi aggiungerlo al DOM mentre JQuery appendcrea quel nodo per te e lo aggiunge subito al DOM che si tratti di un elemento di testo o di un elemento html o di una combinazione!

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



0

appendChildè un metodo javascript puro dove as appendè un metodo jQuery .


0

Il metodo JavaScript appendchild può essere utilizzato per aggiungere un elemento a un altro elemento. L' elemento jQuery Append fa lo stesso lavoro ma sicuramente in un numero inferiore di righe:

Facciamo un esempio per aggiungere un elemento in un elenco:

a) Con 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) Con jQuery

$("#myList").append("<li>jQuery</li>")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.