jQuery: Lors de la création d’un nouvel élément, ai-je besoin de la balise de fin?

var $div = $('
').appendTo($('#header'));

Lors de la création de nouveaux éléments et de leur ajout au DOM, avez-vous besoin de la balise de fin? pourquoi ou pourquoi pas? Dois-je uniquement utiliser la balise de fin si je place du contenu dans la balise que je crée? ainsi:

 var $div = $('
Error-Homie!
').appendTo($('#header'));

ou pourrais-je créer un élément avec du contenu, mais laisser de côté la balise de fin? Bien? Mal?

 var $div = $('
').appendTo($('#header'));

Bien que cela puisse fonctionner si vous n’utilisez pas de balise de fermeture (ou au moins, fermez-la vous-même ), vous devez append une balise de fermeture (fermeture automatique) (comme indiqué, pour la compatibilité entre plates-formes ):

Pour garantir la compatibilité entre plates-formes, l’extrait de code doit être correctement formé. Les balises pouvant contenir d’autres éléments doivent être associées à une balise de fermeture:

 $(''); 

Sinon, jQuery autorise la syntaxe de balise de type XML (avec ou sans espace avant la barre oblique):

 $(''); 

Les balises qui ne peuvent pas contenir d’éléments peuvent être fermées rapidement ou non:

 $(''); $(''); 

Voici comment jQuery crée les éléments:

Si le code HTML est plus complexe qu’une balise unique sans atsortingbuts, comme dans l’exemple ci-dessus, la création réelle des éléments est gérée par le mécanisme innerHTML du navigateur. Dans la plupart des cas, jQuery crée un nouvel élément et définit la propriété innerHTML de l’élément sur le fragment HTML qui a été transmis. Lorsque le paramètre a une seule balise, telle que $('') ou $('') , jQuery crée l’élément à l’aide de la fonction JavaScript native createElement() .


Btw. vous pouvez également transmettre les données en tant que second paramètre:

 $('
', {'class': 'error', text: 'Error-Homie!'})

vous avez besoin de la balise de fin: http://api.jquery.com/appendTo/ par exemple

 $('

Test

').appendTo('.inner');

il devrait également être

 .appendTo('#header'); 

et pas

 .appendTo($('#header')); 

vous pouvez probablement le faire comme ça

 $('
',{class:'error'}).html('Error-Homie!').appendTo($('#header'));

Vous avez toujours besoin que la balise de fin ait le code HTML approprié.

Mais il est un fait que la majorité des navigateurs laissent de telles erreurs. Ce n’est pas une raison pour être paresseux, cependant, vous ne devez pas compter sur la tolérance des navigateurs pour que votre code fonctionne. Cette tolérance est là pour pouvoir afficher des sites avec quelques erreurs, ne pas mettre en garde le code délibérément incorrect.