Open/Close row
by László Kovács
HTML
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
Click on a row for more info:
<table>
<tr><td>+</td><td><p>Name</p></td><td><p>Age</p></td></tr>
<tr><td colspan="3"><p>Blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah.</p>
</td></tr>
<tr><td>+</td><td><p>Name</p></td><td><p>Age</p></td></tr>
<tr><td colspan="3"><p>Blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah.</p>
</td></tr>
<tr><td>+</td><td><p>Name</p></td><td><p>Age</p></td></tr>
<tr><td colspan="3"><p>Blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah.</p>
</td></tr>
</table>
CSS
table { width: 75%; }
tr {border: 2px solid #AEAEAE;}
JavaScript
$(function() {
$("td[colspan=3]").find("p").hide();
$("table").click(function(event) {
event.stopPropagation();
var $target = $(event.target);
if ( $target.closest("td").attr("colspan") > 1 ) {
$target.slideUp();
$target.closest("tr").prev().find("td:first").html("+");
} else {
$target.closest("tr").next().find("p").slideToggle();
if ($target.closest("tr").find("td:first").html() == "+")
$target.closest("tr").find("td:first").html("-");
else
$target.closest("tr").find("td:first").html("+");
}
});
});