2013-04-10 3 views
54

Вот некоторые примеры кода:Append Vs AppendChild JQuery

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.

Любые реальные сценарии?

PS: Может быть глупый вопрос, просто хочу знать точную разницу

+0

посмотреть здесь http://jsperf.com/native-appendchild-vs-jquery-append/4 – PSR

+0

Один метод JQuery, другой является нативный метод JS, они оба делают почти то же самое, но append() принимает несколько элементов. – adeneo

+0

Дно использует библиотеку (например, JQuery с общими ссылками), верхняя часть использует «родные» методы DOM для добавления элемента. –

ответ

64

Главное отличие состоит в том, что 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 при добавлении элементов страницы.

+0

Знаете ли вы, почему append является «безопасным», а appendChild - нет? Что делает domManip? –

+1

@RobFox: безопасно Я хотел сказать, что если вы используете jquery, тогда вы можете использовать всегда append (нет ситуации, когда DOM appendchild предпочтительнее). По отношению к domManip, кажется, главная цель - использовать DOM DocumentFragments. [Здесь] (http://www.blog.highub.com/javascript/decoding-jquery-dommanip-dom-manipulation/) у вас есть описание метода и [здесь] (http://ejohn.org/blog/dom-documentfragments /) у вас есть официальное слово Джона Ресига о мотивах использования фрагментов –

+0

javascript также имеет 'ParentNode.append()' now. пожалуйста, проверьте @ SagarV ответ для получения дополнительной информации. –

4

appendChild является DOM vanilla-js функции.

append является функцией jQuery.

У каждого из них свои собственные причуды.

11

append - метод jQuery для добавления некоторого содержимого или HTML в элемент.

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

appendChild - это чистый метод DOM для добавления дочернего элемента.

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

appendChild является чистым Javascript метод, где в качестве append является метод JQuery.

4

Я знаю, что это старый и ответивший вопрос, и я не ищу голоса. Я просто хочу добавить лишнюю мелочь, которая, я думаю, может помочь новичкам.

да 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>');

7

больше не

Теперь не присоединять это метод в JavaScript

MDN documentation on append method

Цитирование MDN

Метод ParentNode.append вставляет набор объектов Node или DOMString объекты после последнего ребенка ParentNode. DOMString объекты вставляются как эквивалентные текстовые узлы.

Это не поддерживается 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>

+0

MDN не сообщает, что теперь находится в javascript, спецификация ES – Raimonds

Смежные вопросы