2014-05-01 10 views
6

Qui è la mia semplice HTML:Perché la chiamata a appendChild di jQuery fallisce con un errore non definito?

<body> 
    <div id="myParentDivElement"> 
     Hello World! 
    </div> 
</body> 

Ecco il JavaScript accompagnamento:

$(document).ready(function() { 
    var myDOMElement = document.getElementById("myParentDivElement"); 

    var newDivID = "div_1"; 
    var newDiv = $('<div id="' + newDivID + '"/>'); 
    $(newDiv).css('marginLeft', '50px'); 

    var newSpanID = "span_1"; 
    var newSpan = $('<span id="' + newSpanID + '"/>'); 
    newSpan.text('myLabel'); 
    newDiv.appendChild(newSpan); 
    $(myDOMElement).appendChild(newDiv); 
}); 

Ma quando ho eseguito questo codice la linea newDiv.appendChild(newSpan); dà il seguente errore:

Uncaught TypeError: undefined is not a function 

Can qualcuno spiega perché? Ecco il JSFiddle dimostrando che non funziona: http://jsfiddle.net/TsTMx/2/

+0

Perché non accettare una di queste risposte? –

risposta

12

.appendChild() è un metodo JavaScript, jQuery non semplice. Il metodo jQuery è .append().

newDiv.append(newSpan); 
$(myDOMElement).append(newDiv); 
+1

'appendChild' è DOM, non JavaScript. – Quentin

+1

Vero che fa parte del DOM ma è giusto dire che si tratta di un semplice metodo JavaScript rispetto a un metodo jQuery. – MrCode

+0

I metodi DOM sono forniti dal browser e quindi tendono ad essere scritti in C/C++/Objective-C, mentre jQuery è scritto in JS così, mentre 'append' potrebbe finire per chiamare il metodo DOM, è scritto in JS stesso:) – Quentin

Problemi correlati