Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hide current table row on click using jQuery

I have a bunch of table rows such as:

<tr>
  <td>cell1</td>
  <td>cell2</td>
  <td><a href="action.php">cell3</a></td>
</tr>

When someone clicks the link in cell3 is there a way to hide the whole tr row? So the second they click that link in cell3 the whole tr is hidden?

like image 508
John Avatar asked Dec 28 '10 01:12

John


3 Answers

hi this is my solution

$(document).on("click", "td:nth-child(3)", function () {
      if (confirm("Are you sure ?")) {
          $(this).closest("tr").hide();
      }
  });
like image 126
Masoud Avatar answered Nov 08 '22 17:11

Masoud


Just use simply jQuery and hide the parent.

$('td.hide_on_click').live('click', function(){
  // PICK ONE OF THESE:
  $(this).parent('tr').remove(); //completely destroy the tr (remove from DOM)
  $(this).parent('tr').hide(); //just hide it from the user
});

Remove the a tag. If you want it to have the "link appearance", add a css style for a something clickable:

.clickable {
  cursor: pointer;
  cursor: hand;
}

then:

<table>
  <tr>
    <td></td>
    <td></td>
    <td class="hide_on_click clickable">delete</td>
  </tr>
</table>
like image 44
sethvargo Avatar answered Nov 08 '22 17:11

sethvargo


This is a good place for .delegate(), like this:

$("#tableID").delegate("td:nth-child(3)", "click", function() {
  $(this).closest("tr").hide();
});

By using .delegate() we attach one click handler to the <table> for all those third-column cells, and then use .closest() to climb up to the <tr> to .hide(). If you want it on the link instead, just change td:nth-child(3) to td a, the rest is the same.

like image 12
Nick Craver Avatar answered Nov 08 '22 19:11

Nick Craver