Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery切换包装元素的最佳方法_Jquery - Fatal编程技术网

使用jQuery切换包装元素的最佳方法

使用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元素

我有这个HTML代码

<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");