Bonjour,

J'utilise JQuery pour générer quasiment entièrement des pages, et je suis régulièrement confronté à un problème dont je ne saurais dire s'il s'agit d'un bug ou d'une incompréhension de ma part.

J'utilise JQuery 2.1.1.1

Prenons l'exemple suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
$("body").append($("<input />")
	.attr("id", "my_item")
	.attr("type", "text")
	.val("pouet")
	.after(
		$("<label />")
			.attr("for", "my_item")
			.text("tutu")
	)
);
Ca ne marche pas, le label contenant tutu ne s'affichant pas...

En revanche, si j'écrit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
var obj = $("body").append($("<input />")
	.attr("id", "my_item")
	.attr("type", "text")
	.val("pouet")
);
obj.after($("<label />")
	.attr("for", "my_item")
	.text("tutu")
);
Là, ça marche, si ce n'est que tutu apparaît à la ligne. Il me semble pourtant que les 2 exemples devraient être équivalent ?

Enfin, si j'écris :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
$("body").append($("<input />")
	.attr("id", "my_item")
	.attr("type", "text")
	.val("pouet")
);
$("#my_item").after(	$("<label />")
	.attr("for", "my_item")
	.text("tutu")
);
Ca marche aussi et tutu apparaît tout de suite après le input...

Quelqu'un saurait-il expliquer ça ?

En vous remerciant