2010-02-11 5 views
134

Ho una determinata casella di testo e voglio aggiungere un div dopo di esso. Ho provato la funzione .append(), ma questo aggiunge solo il div nell'elemento.jQuery: aggiungi elemento dopo un altro elemento

Ad esempio, ho:

e voglio cambiare la situazione in:

<input type="text" id="bla" /><div id="space"></div> 

risposta

228

provare a utilizzare il metodo after():

$('#bla').after('<div id="space"></div>'); 

Documentation

+5

I metodi .after() e .insertAfter() eseguono la stessa operazione. – Rifat

+7

Questo è corretto, ma dipende dal modo in cui preferisci codificarlo. Normalmente avrei già inserito l'input "#bla", quindi aggiungo il contenuto extra in seguito. Puramente la mia preferenza, però, non sono sicuro se entrambi i metodi hanno un vantaggio di velocità. – Rowan

6

Prima di tutto, input elemento non dovrebbe avere un tag di chiusura (da http://www.w3.org/TR/html401/interact/forms.html#edef-INPUT: Fine etichetta: proibito ).

In secondo luogo, è necessaria la funzione after(), non append().

+0

corretta, ma questo è ciò che accade quando provo la funzione .Append(). – skerit

+2

Se è XHTML, l'elemento di input deve essere chiuso (ma non con un tag di chiusura). – CiscoIPPhone

+2

In HTML4 '' non deve essere chiuso. –

30

provare

.insertAfter() 

qui

$(content).insertAfter('#bla'); 
+12

Il tuo codice non dovrebbe essere più simile a '$ ('

') .insertAfter ('# bla')' piuttosto che '$ ('# bla'). InsertAfter (contenuto);'? – Rowan

0

Risolto jQuery: Aggiungi elemento dopo l'altro elemento

<script> 
$("p").append("<strong>Hello</strong>"); 
</script> 

O

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
jQuery (".sidebar_cart") .append("<a href='http://#'>Continue Shopping</a>"); 
}); 
</script>