使用jQuery切换包装元素的最佳方法
我有这个HTML代码使用jQuery切换包装元素的最佳方法,jquery,Jquery,我有这个HTML代码 <span id="s">Attachments</span> 附件 如何使用jQuery将外部SPAN元素与以下表代码块切换,以便“附件”文本与表元素一起包装 <table id="t"> <tr> <td>Attachments</td> </tr> </table> 附件 您可以创建一个带有tr和td的表,将span中的HTML内容插入到新的td元素
<span id="s">Attachments</span>
附件
如何使用jQuery将外部SPAN元素与以下表代码块切换,以便“附件”文本与表元素一起包装
<table id="t">
<tr>
<td>Attachments</td>
</tr>
</table>
附件
您可以创建一个带有tr和td的表,将span中的HTML内容插入到新的td元素中,在span之后立即插入表,最后删除span
$("<table id='t'><tr><td>" + $("#s").html() +
"</td></tr></table").insertAfter("#s");
$("#s").remove();
$(“”+$(“#s”).html()+
“包装#s
元素,然后将其替换为自己的内容:
$("#s")
.wrap("<table id='t'><tr><td></td></tr></table>")
.replaceWith(function(){
return this.innerHTML;
});
这太棒了!我有点困惑了。它怎么知道在哪里插入文本。例如:它怎么知道插入“附件”"在Cell-1中,而不是在Cell-2中?@RegisteredUser第一个Cell被认为是最内部的第一个容器。因此,它是最终使用的位置。不过,我可以避免包装字符串变得太复杂。好的,但这只是一个问题。如果我希望该位置作为容器的第二个TR/TD,该怎么办?我应该做什么修改?@RegisteredUser这是一个完全不同的问题,我的朋友:)然而,我建议您创建一个新表,然后将#s
的未包装文本指定为第二个tr
/td
@RegisteredUser的值,尽管我觉得两个不同的问题正在得到解决,我已根据此处的讨论更新了我的答案。请尝试以下方法:。我不得不将JSFIDLE更改为不使用onLoad,因为它无法定义您的函数。我还简化了代码,并将insertAfter放在创建表的同一命令上。删除了我以前的注释。在此处找到了解决方案:
$("<table>", {
id:'t', html:'<tr><td>Foo</td><td>' + $("#s").html() + '</td></tr>'
}).replaceAll("#s");