De nombreuses méthodes jQuery sont conçues pour créer automatiquement des éléments à partir de la moitié seulement Pour les balises écrites, comme "<span>"
pour un .prepend(), un élément span entier sera ajouté au DOM. Ou, comme vous le verrez dans Firebug, "<span></span>"
inséré d'abord dans l'élément d'ancrage.
Je ne vois pas pourquoi vous voulez créer HTML invalide, mais si vous devez, vous pouvez le faire de cette façon:
$("li > a").html("<span>"+$("li > a").html());
Ou, comme le suggère Reigel, avec une fonction anonyme au méthode .html() (je l'ai écrit ma réponse assez rapidement et, évidemment, unthoughtfully):
$("li > a").html(function (idx, html) {
return "<span>" + html;
});
Sinon, il pourrait sembler que vous voulez envelopper le contenu de l'élément d'ancrage dans une travée.Dans ce cas, vous devriez plutôt utiliser l'un des jQuerywrappingmethods:
$("li > a").wrap("<span>");
Vous n'êtes pas censé créer à la fois l'élément de départ et l'élément de fermeture vous (lorsque vous utilisez jQuery).
Um .... exactement pourquoi ne voulez-vous créer malformé HTML? – cletus
bien, je vais ajouter la balise de fermeture, je dois d'abord trier la balise d'ouverture: | –
Vous devriez reconsidérer votre configuration. S'il repose sur la création de HTML malformé, il devrait probablement être réécrit pour quelque chose de plus solide (et XML/HTMLish). Ou vous cachez une raison spécifique de nous? – Boldewyn