Ramgaard
Ramgaard

Reputation: 177

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

I have some problem splitting a table with jQuery.

This is the 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>

I want to make it look like this after I call a function:

<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>

I have tried with:

$(function(){
    $('.submenu td:eq(3)').after('</tr><tr>');
});

Upvotes: 3

Views: 3635

Answers (3)

Anthony Carbon
Anthony Carbon

Reputation: 618

This code solve the problem of yours.

enter image description here

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

DEMO

Upvotes: 0

Stephan
Stephan

Reputation: 43033

Try this snippet instead:

$(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>

Upvotes: 3

kartikmaji
kartikmaji

Reputation: 966

<script>
     $(".submenu td:nth-child(4)" ).after( "</tr><tr>" );
</script>

This will work.

Upvotes: 0

Related Questions