Javascript jqueryappend/prepend/wrapInner?

Javascript jqueryappend/prepend/wrapInner?,javascript,jquery,append,Javascript,Jquery,Append,预期结果: <li><a><span class="icon"></span><span class="text">Link Text</span></a></li> 产出: <li><a><span class="icon">Link Text</span></a></li> 链接文本 $('li a')。前缀(“”);

预期结果:

<li><a><span class="icon"></span><span class="text">Link Text</span></a></li>
产出:

<li><a><span class="icon">Link Text</span></a></li>
链接文本
$('li a')。前缀(“”);
$('LIA')。追加(“”);
产出:

<li><a><span class="icon"></span><span class='text'></span>Link Text</a></li>
链接文本
有什么方法可以实现我想要的吗?

像这样的方法应该可以:

$('li a').html('<span class="icon"></span><span class="text">' + $('li a').html() + '</span>');
$('li a').html('+$('li a').html()+'');

类似的方法应该可以:

$('li a').html('<span class="icon"></span><span class="text">' + $('li a').html() + '</span>');
$('li a').html('+$('li a').html()+'');

这似乎效果更好:)

var curText=$('li a').text();
$('li a').html(“+curText+”);

这似乎效果更好:)

var curText=$('li a').text();
$('li a').html(“+curText+”);

在此处查看我的。我以前是这样的

$('li a').wrapInner("<span class='text'></span>");

$('li a').prepend("<span class='icon'></span>");
$('li a').wrapInner(“”);
$('li a')。前缀(“”);
如果你想在一行,然后使用如下

$('li a').wrapInner("<span class='text'></span>").prepend("<span class='icon'></span>");
$('li a').wrapInner(“”).prepend(“”);
此处

检查我的此处。我以前是这样的

$('li a').wrapInner("<span class='text'></span>");

$('li a').prepend("<span class='icon'></span>");
$('li a').wrapInner(“”);
$('li a')。前缀(“”);
如果你想在一行,然后使用如下

$('li a').wrapInner("<span class='text'></span>").prepend("<span class='icon'></span>");
$('li a').wrapInner(“”).prepend(“”);

这里

这样做有什么不对吗

text = $('li a').html();
$('li a').html("<span class='icon'></span><span class='text'>"+text+"</span>");
text=$('li a').html();
$('li a').html(“+text+”);

这样做有什么不对吗

text = $('li a').html();
$('li a').html("<span class='icon'></span><span class='text'>"+text+"</span>");
text=$('li a').html();
$('li a').html(“+text+”);

谢谢,这很有效!我原以为
.html()
会起作用,但在jQuery中没有足够的技能来解决它。如果有多个
li a
元素,这将不起作用。这是一种真正不应该使用的破坏性方法。@amnotiam你还有什么建议吗?@TaiKahar:任何在插入新内容时保留现有DOM元素的方法。否则,您将从现有DOM生成新的HTML标记,然后使用新添加的内容重新解析新标记,最后销毁旧元素并重新生成新元素。这也会破坏任何事件处理程序和与旧元素关联的数据。谢谢,这很有效!我原以为
.html()
会起作用,但在jQuery中没有足够的技能来解决它。如果有多个
li a
元素,这将不起作用。这是一种真正不应该使用的破坏性方法。@amnotiam你还有什么建议吗?@TaiKahar:任何在插入新内容时保留现有DOM元素的方法。否则,您将从现有DOM生成新的HTML标记,然后使用新添加的内容重新解析新标记,最后销毁旧元素并重新生成新元素。这也会破坏任何和旧元素相关的事件处理程序和数据<代码>“”这也有效,谢谢!1行。在代码上比@Matt_H solution略轻。+1这比破坏性的
.html()
clobbering要好得多。你到底为什么要颠倒开头和结尾标记<代码>“”这也有效,谢谢!1行。在代码上比@Matt_H solution略轻。+1这比破坏性的
.html()。