2010-02-11 22 views
134

J'ai une certaine zone de texte et je veux ajouter un div après. J'ai essayé la fonction .append(), mais cela ajoute seulement la div dans l'élément.jQuery: Ajouter un élément après un autre élément

Par exemple, j'ai:

et je veux changer cela en:

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

Répondre

228

essayez d'utiliser la méthode after():

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

Documentation

+5

Les méthodes .after() et .insertAfter() effectuent la même tâche. – Rifat

+7

C'est correct, mais cela dépend de la façon dont vous préférez le coder. Normalement, l'entrée '#bla' est déjà sélectionnée, puis j'ajoute le contenu supplémentaire après. Purement ma préférence cependant, je ne suis pas sûr si l'une ou l'autre méthode a un avantage de vitesse. – Rowan

6

Tout d'abord, l'élément input ne devrait pas avoir une balise de fermeture (de http://www.w3.org/TR/html401/interact/forms.html#edef-INPUT: Fin tag: interdit ).

La deuxième chose, vous avez besoin de la fonction after(), pas append().

+0

Correct, mais c'est ce qui se passe lorsque je tente la fonction .append(). – skerit

+2

S'il s'agit de XHTML, l'élément d'entrée doit être fermé (mais pas avec une balise de fin). – CiscoIPPhone

+2

En HTML4 '' ne doit pas être fermé. –

30

essayer

.insertAfter() 

ici

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

Votre code ne devrait-il pas ressembler plus à '$ ('

') .insertAfter ('# bla')' plutôt qu'à '$ ('# bla'). InsertAfter (content);'? – Rowan

0

Solved jQuery: Ajouter élément après un autre élément

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

OU

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