如何用 jQuery 拆分 table 行(在 TD 之间插入 TR)

How to split a table row with jQuery (insert TR between TD's)

我在拆分 table 和 jQuery 时遇到了一些问题。

这是table:

<table width="100%" id="submenu">
    <tr>
        <td class="submenu">A</td>
        <td class="submenu">B</td>
        <td class="submenu">C</td>
        <td class="submenu">D</td>
        <td class="submenu">E</td>
        <td class="submenu">F</td>  
        <td class="submenu">G</td>     
        <td class="submenu">H</td>        
    </tr>
</table>

我想在调用一个函数后让它看起来像这样:

<table width="100%" id="submenu">
    <tr>
        <td class="submenu">A</td>
        <td class="submenu">B</td>
        <td class="submenu">C</td>
        <td class="submenu">D</td>
    </tr>
    <tr>
        <td class="submenu">E</td>
        <td class="submenu">F</td>  
        <td class="submenu">G</td>     
        <td class="submenu">H</td>        
    </tr>
</table>

我试过:

$(function(){
    $('.submenu td:eq(3)').after('</tr><tr>');
});
<script>
     $(".submenu td:nth-child(4)" ).after( "</tr><tr>" );
</script>

这会起作用。

试试这个片段:

$(function(){
  // # Add a new row after the first one in the table
  $('table#submenu tr:first').after('<tr></tr>');

  // # Move the four last TDs to this new row
  $('table#submenu tr:first td.submenu:gt(3)') // Select the four last TDs
   .detach() // Detach them from their current row
   .appendTo('table#submenu tr:nth-child(2)'); // Add them at the end of the new row
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table width="100%" id="submenu" border="1">
    <tr>
        <td class="submenu">A</td>
        <td class="submenu">B</td>
        <td class="submenu">C</td>
        <td class="submenu">D</td>
        <td class="submenu">E</td>
        <td class="submenu">F</td>  
        <td class="submenu">G</td>     
        <td class="submenu">H</td>        
    </tr>
</table>

这段代码解决了你的问题。

$(document).ready(function(){  
     $("table tr td:nth-child(5n)").addClass('break');
    var boundary = $("td.break");
    $("<tr>").insertAfter(boundary.parent()).append(boundary.nextAll().andSelf());
});

DEMO