2012-04-25 19 views

Respuesta

20

Yo creo que hay que extender la propiedad innerHTML para hacer esto

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

alguna explicación:

  • [0] es necesario porque element es una colección
  • + = extienden innerHTML y no sobrescribir
  • cierre </a> necesaria ya que algunos navegadores permiten solamente HTML válida para ajustarse a innerHTML
+1

Me encanta el truco + =, gracias !! – Tim

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

a partir del código fuente de jQuery:

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

Tenga en cuenta que con el fin de hacer que funcione lo que necesita para construir el elemento DOM de la cadena, se está haciendo con la función jQuery domManip.

jQuery 1.7.2 source code

+0

document.body.appendChild ("

") // Error: NOT_FOUND_ERR: DOM Excepción 8 ... al menos me sale esto en Chrome -.- creo appendChild sólo funciona con los nodos reales –

+1

@TobiasKrogh: La 'domManip' es significativo. – Ryan

+0

@TobiasKrogh. copió solo un poco del código ... – gdoron

7

Uso DOM manipulaciones, no 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

De acuerdo; esta es definitivamente la forma en que sugeriría. –

+0

elemento es una colección jQuery ... por lo que necesitaría 'elemento [0] .appendChild (lista);' en mi humilde opinión –

+2

@TobiasKrogh: Creo que si el OP no quiere usar jQuery para anexar un elemento, entonces el OP ya no usa jQuery. En mi humilde opinión. – Ryan

0

La manera más fácil de replicar Jquery método append en JavaScript puro es con "insertAdjacentHTML"

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

Más Información - MDN insertAdjacentHTML