javascript - 如何使用jquery在表的第n个<td>之后包装<tr/>

标签 javascript jquery html-table

我想在表格的第二个 td 之后换行

这是我的代码:

<table class="test table">
    <tbody>
        <tr><td>Row 1 col 1</td><td>Row 1 col 2</td><td>Row 1 col 3</td><td>Row 1 col 4</td></tr>

        <tr><td>Row 2 col 1</td><td>Row 2 col 2</td><td>Row 2 col 3</td><td>Row 2 col 4</td></tr>

        <tr><td>Row 3 col 1</td><td>Row 3 col 2</td><td>Row 3 col 3</td><td>Row 3 col 4</td></tr>

        <tr><td>Row 4 col 1</td><td>Row 4 col 2</td><td>Row 4 col 3</td><td>Row 4 col 4</td></tr>
     </tbody>
</table>

我想看到这样的代码:

<table class="test table">
    <tbody>
        <tr><td>Row 1 col 1</td><td>Row 1 col 2</td></tr><tr><td>Row 1 col 3</td><td>Row 1 col 4</td></tr>

        <tr><td>Row 2 col 1</td><td>Row 2 col 2</td></tr><tr><td>Row 2 col 3</td><td>Row 2 col 4</td></tr>

        <tr><td>Row 3 col 1</td><td>Row 3 col 2</td></tr><tr><td>Row 3 col 3</td><td>Row 3 col 4</td></tr>

        <tr><td>Row 4 col 1</td><td>Row 4 col 2</td></tr><tr><td>Row 4 col 3</td><td>Row 4 col 4</td></tr>
     </tbody>
</table>

我尝试过这种方法:

$(".test tr td:eq(2)").wrap('<tr />');

但它无法正常工作。

最佳答案

所以我们的最终目标是添加 </tr><tr>第二个之后<td>结束。如果您尝试类似 $(".test tr td:eq(1)").after('</tr><tr>'); 的代码,它不会起作用。这将添加如下元素。

enter image description here

因为使用 JQuery,您无法像上面那样直接添加结束语。如果你用 google 搜索一下为什么不能在 JQuery 中添加结束标签,你可以获得更多文章。现在来谈谈我们的问题,我们如何解决这个问题。

感谢@Frédéric Hamidi 为 ul 提供了类似情况的解决方案和li元素here 。在JQuery中,您可以使用nextAll()andSelf()获取要移动的元素,然后创建一个新的 <tr>并使用append()重新定位元素。我重构了他的解决方案来解决我们的问题,如下所示。

$("table.test tr td:nth-child(3)").each(function(){
       $("<tr>").insertAfter($(this).parent())
             .append($(this).nextAll().andSelf());
    });
body {
    font-family: Verdana, Arial, sans-serif;
    font-size: 12px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="test table">
    <tbody>
        <tr><td>Row 1 col 1</td><td>Row 1 col 2</td><td>Row 1 col 3</td><td>Row 1 col 4</td></tr>

        <tr><td>Row 2 col 1</td><td>Row 2 col 2</td><td>Row 2 col 3</td><td>Row 2 col 4</td></tr>

        <tr><td>Row 3 col 1</td><td>Row 3 col 2</td><td>Row 3 col 3</td><td>Row 3 col 4</td></tr>

        <tr><td>Row 4 col 1</td><td>Row 4 col 2</td><td>Row 4 col 3</td><td>Row 4 col 4</td></tr>
     </tbody>
</table>

Here是 JSFiddle 版本,如果您想锻炼一些其他东西。

关于javascript - 如何使用jquery在表的第n个<td>之后包装<tr/>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49379137/

相关文章:

jquery - 调整浏览器停止宽度 :100% background over css

php - 使复选框识别其预期数据

javascript - 通过 rootScope 从遗留代码广播到 Angular

javascript - jquery $getJSON 数组不显示全部

javascript - AJAX 成功后如何关闭模态窗口

javascript - 使用 switch 语句从另一个页面滚动到 anchor

linux - 如何将多个 html 文件中的表格提取到一个 csv 文件中?

php - 从 JSON 数组创建 HTML 表

javascript - 当使用 JavaScript 作为多台计算机的输入时,错误会蔓延到 JavaScript 中吗?

javascript - 聊天在服务器和客户端的 Date.now() 中存在差异