Michael
Michael

Reputation: 179

Delete table row with index jQuery

I currently select a row, and I want to click a delete button, that will delete the selected row (i have the row selection already, just need the delete part).

I have tried:

$("#deleteBtn").click(function() {
    $(this).closest('tr').remove();
});

Html:

    <table id="splashTable" class="table table-fixed">
      <thead>
        <tr>
          <th class="col-xs-3">First</th>
          <th class="col-xs-3">Last</th>
          <th class="col-xs-6">Age</th>
          <th class="col-xs-6">Salary</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="col-xs-3">John</td>
          <td class="col-xs-3">Freeman</td>
          <td class="col-xs-6">36</td>
          <td class="col-xs-6">$53,000</td>
        </tr>

Upvotes: 0

Views: 2357

Answers (1)

gaetanoM
gaetanoM

Reputation: 42044

Because I don't see all your html I assume a solution.

In order to select a row you can add a class selected to the row and you can remove such a class from the previous selected one. Hence, only one row per time is selected.

On delete you can simply remove the row with the selected class.

$('#splashTable tbody tr').on('click', function(e) {
    $(this).siblings('.selected').removeClass('selected');
    $(this).addClass('selected');
})


$("#deleteBtn").click(function() {
    $('#splashTable tbody tr.selected').remove();
});
.selected {
    background-color: yellow;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<button id="deleteBtn">Delete selected row</button>
<table id="splashTable" class="table table-fixed">
    <thead>
    <tr>
        <th class="col-xs-3">First</th>
        <th class="col-xs-3">Last</th>
        <th class="col-xs-6">Age</th>
        <th class="col-xs-6">Salary</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td class="col-xs-3">John1</td>
        <td class="col-xs-3">Freeman</td>
        <td class="col-xs-6">36</td>
        <td class="col-xs-6">$53,000</td>
    </tr>
    <tr>
        <td class="col-xs-3">John2</td>
        <td class="col-xs-3">Freeman</td>
        <td class="col-xs-6">36</td>
        <td class="col-xs-6">$53,000</td>
    </tr>
    </tbody>
</table>

If, instead, the delete button is added to each row the solution can be:

$("#splashTable .delete").on('click', function (e) {
    var row = $(this).closest('tr');
    if (row.is('.selected'))
        row.remove();
});

$('#splashTable tbody tr').on('click', function (e) {
    $(this).siblings('.selected').removeClass('selected');
    $(this).addClass('selected');
})


$("#splashTable .delete").on('click', function (e) {
    var row = $(this).closest('tr');
    if (row.is('.selected'))
        row.remove();
});
.selected {
    background-color: yellow;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<table id="splashTable" class="table table-fixed">
    <thead>
    <tr>
        <th class="col-xs-3">First</th>
        <th class="col-xs-3">Last</th>
        <th class="col-xs-6">Age</th>
        <th class="col-xs-6">Salary</th>
        <th class="col-xs-6">Delete</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td class="col-xs-3">John1</td>
        <td class="col-xs-3">Freeman</td>
        <td class="col-xs-6">36</td>
        <td class="col-xs-6">$53,000</td>
        <td><button type="button" class="btn btn-default btn-sm delete"><span class="glyphicon glyphicon-trash"></span></button></td>
    </tr>
    <tr>
        <td class="col-xs-3">John2</td>
        <td class="col-xs-3">Freeman</td>
        <td class="col-xs-6">36</td>
        <td class="col-xs-6">$53,000</td>
        <td><button type="button" class="btn btn-default btn-sm delete"><span class="glyphicon glyphicon-trash"></span></button></td>
    </tr>
    </tbody>
</table>

Upvotes: 1

Related Questions