Reputation: 100288
I have a table with row which cab be hidden by user. It's implemented this way:
Markup:
<table>
<tr>
<td>
<table style="margin-left: auto; text-align: right;">
<tr>
<td class="stats-hide">
<a href="#" onclick="hideStats();">Hide</a>
</td>
<td class="stats-show" style="display: none;">
<a href="#" onclick="showStats();">Show</a>
</td>
</tr>
</table>
</td>
</tr>
<tr class="stats-hide">
<td>
<!-- data -->
</td>
</tr>
</table>
And jQuery code:
<script type="text/javascript" language="javascript">
function hideStats() {
hideControls(true, $('.stats-hide'));
hideControls(false, $('.stats-show'));
}
function showStats() {
hideControls(false, $('.stats-hide'));
hideControls(true, $('.stats-show'));
}
function hideControls(value, arr) {
$(arr).each(function () {
if (value) {
$(this).hide();
}
else {
$(this).show();
}
});
}
</script>
How to implement the same behavior with one, single link and one, probably, CSS class?
My idea - store somewhere a boolean variable and toggle controls visibility relatively to this variable. Are there more?
Upvotes: 2
Views: 619
Reputation: 141879
Is the row hiding not working properly on IE? What is the version of jQuery and the browser which is troublesome?
I created an example using toggle as suggested by @Galen and it works on Chrome, Firefox, and Safari. I don't have access to IE.
Here's the code:
<table>
<tr>
<td>
<table class="data">
<tr>
<td class="stats-hide">
<a href="#" class="toggle-stats">Hide</a>
</td>
<td class="stats-show">
<a href="#" class="toggle-stats">Show</a>
</td>
</tr>
</table>
</td>
</tr>
<tr class="stats-hide">
<td>
Some Data
</td>
</tr>
</table>
$(".toggle-stats").click(function() {
$(".stats-hide, .stats-show").toggle();
});
Upvotes: 2
Reputation: 5460
Use a toggle as mentioned in the above post but use a "tbody" instead of a "tr" so that rows can be hidden/shown as required.
Upvotes: 2