2012-04-25 12 views

risposta

20

Credo che bisogna estendere la proprietà innerHTML per fare questo

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

qualche spiegazione:

  • [0] necessaria perché element è una collezione
  • + = estendono the innerHTML e non sovrascrivere
  • chiusura </a> necessario in quanto alcuni browser consentono solo valido html per essere impostato su innerHTML
+1

Ama il + = trucco, grazie !! – Tim

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

dal codice sorgente di jQuery:

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

Nota che per farlo funzionare è necessario costruire l'elemento DOM dal stringa, viene eseguita con la funzione jQuery domManip.

jQuery 1.7.2 source code

+0

document.body.appendChild ("

") // Errore: NOT_FOUND_ERR: DOM Eccezione 8 ... Almeno ottengo questo in Chrome -.- Penso appendChild funzionerà solo con i nodi attuali –

+1

@TobiasKrogh: The 'domManip' è significativo. – Ryan

+0

@TobiasKrogh. hai copiato solo un po 'del codice ... – gdoron

7

Usa DOM manipolazioni, non 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

concordato; questo è sicuramente il modo in cui suggerirei. L'elemento –

+0

è una raccolta jQuery ... quindi è necessario 'elemento [0] .appendChild (lista);' a mio modesto parere –

+2

@TobiasKrogh: penserei che se l'OP non vuole usare jQuery per aggiungere un elemento, quindi l'OP non sta più usando jQuery. A mio modesto parere. – Ryan

0

Il modo più semplice per replicare Jquery metodo Append in puro JavaScript è con "insertAdjacentHTML"

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

Altro Info - MDN insertAdjacentHTML