多くの jQuery メソッドは、半分しか書かれていないタグから要素を自動的に作成するように設計されて"<span>"
います。たとえば、.prepend() を実行すると、span 要素全体が DOM に追加されます。または、Firebug でわかるように、"<span></span>"
最初にアンカー要素に挿入されます。
無効な HTML を作成する理由がわかりませんが、必要な場合は、次の方法で作成できます。
$("li > a").html("<span>"+$("li > a").html());
または、Reigel が示唆するように、 .html() メソッドに無名関数を使用します (私は回答をかなり迅速に、そして明らかに思慮深く書きませんでした):
$("li > a").html(function (idx, html) {
return "<span>" + html;
});
そうしないと、アンカー要素のコンテンツをスパンでラップしたいように見えるかもしれません。その場合、代わりにjQuery ラッピング メソッドのいずれかを使用する必要があります。
$("li > a").wrap("<span>");
開始要素と終了要素の両方を自分で作成するつもりはありません (jQuery を使用する場合)。