2012-04-25 5 views

Antwort

20

Ich glaube, Sie die Innerhtml Eigenschaft zu erweitern haben diese

element[0].innerHTML += "<ul><li><a href='url'></a></li></ul>"; 

eine Erklärung zu tun:

  • [0] benötigt, da element ist eine Sammlung
  • + = verlängern die innerHTML und nicht überschreiben
  • Schließen </a> benötigt, da nur einige Browser gültige html erlauben innerHTML- zu setzen
+1

Liebe die + = Trick, danke !! – Tim

1
element.innerHTML += "<ul><li><a href='url'></li></ul>"; 
6

aus dem jQuery-Quellcode:

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

Beachten Sie, dass es, um Sie aus der das DOM-Element konstruieren müssen, um sicherzustellen arbeiten string, es wird mit jQuery domManip Funktion durchgeführt.

jQuery 1.7.2 source code

+0

document.body.appendChild ("

") // Fehler: NOT_FOUND_ERR: DOM Ausnahme 8 ... zumindest bekomme ich diese in Chrome -.- Ich denke appendChild nur –

+1

@TobiasKrogh mit aktuellen Knoten arbeiten: Die 'domManip' ist signifikant. – Ryan

+0

@TobiasKrogh. Du hast nur ein bisschen Code kopiert ... – gdoron

7

Verwenden DOM-Manipulationen, nicht HTML:

var list = document.createElement('ul'); 
var item = document.createElement('li'); 
var link = document.createElement('a'); 

link.href = 'url'; 

item.appendChild(link); 
list.appendChild(item); 
element.appendChild(list); 
+0

Einverstanden; Das ist definitiv die Art, die ich vorschlagen würde. –

+0

Element ist eine jQuery-Sammlung ... so würden Sie brauchen 'Element [0] .appendChild (list);' meiner bescheidenen Meinung nach –

+2

@TobiasKrogh: Ich würde denken, wenn das OP nicht jQuery zum Anhängen verwenden will ein Element, dann verwendet das OP jQuery nicht mehr. Meiner bescheidenen Meinung nach. – Ryan

0

Der einfachste Weg, JQuery hängen Methode in reinem JavaScript zu replizieren ist mit "insertAdjacentHTML"

var this_div = document.getElementById('your_element_id'); 
    this_div.insertAdjacentHTML('beforeend','<b>Any Content</b>'); 

Mehr Info - MDN insertAdjacentHTML