When building a web application, there are some situations where you want to have long list options for a table row data. Like in our example for today, I have a list of "Authors", I wanna have the ability to go to their websites, list of articles, or social networking links easily when the list is shown, but of course, the "Options" column space is limited.
- I only put three options on the first load. As you can see we have "Edit", "Delete" and "More" options.
- The "More" options which is highlighted in "green" will give the user a cue that it can be clicked and more options will be shown, it will beautifully animate to show "more options".
- "More" text will become "Less" and will be highlighted in "red" which will give the user a cue that you can hide the options.
CSS code - styling our table.
body{ font-family:arial,sans-serif; } table a{ color:#039; font-weight:bold; text-decoration:none; } table a:hover{ color:#000; font-weight:bold; } th { background-color:#b9c9fe; color:#039; padding: 10px; } td { background-color:#e8edff; padding: 10px; } .verticalOption{ margin:8px 0; } .moreOptionsLink{ background-color:green; color:#fff; padding: 0 2px; } .moreOptionsLink:hover{ color:#fff; } .moreOptions{ display:none; }
HTML code - we are using static HTML in this example, in the real world, this HTML should be generated dynamically.
<!-- our example table --> <table border='0' cellpadding='2'> <tr> <th>Firstname</th> <th>Lastname</th> <th>Email</th> <th>Username</th> <th>Options</th> </tr> <tr> <td>JM</td> <td>Dalisay</td> <td>jm@gmail.com</td> <td>dalisay</td> <td> <!-- It is important to understand our "Options" HTML structure. --> <a href="">Edit</a> / <a href="">Delete</a> / <a href="" class="moreOptionsLink">More</a> <!-- Here are the hidden "moreOptions" which will be shown when "More" was clicked and hidden when "Less" was clicked --> <div class="moreOptions"> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Articles</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">View Online</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Website</a> </div> <div class="verticalOption"> <a href="https://www.facebook.com/CodeOfANinja" target="_blank">Facebook</a> </div> <div class="verticalOption"> <a href="http://twitter.com/ninjazhai" target="_blank">Twitter</a> </div> <div class="verticalOption"> <a href="https://plus.google.com/103126728967620382717" target="_blank">Google+</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">LinkedIn</a> </div> </div> </td> </tr> <!-- more table rows should be here --> </table>
jQuery code - the animation and magic. :)
<!-- include our jQuery --> <script src="js/jquery-1.9.1.min.js"></script> <script> $(document).ready(function(){ // when "More" or "Less" (class moreOptionsLink) was clicked. $(".moreOptionsLink").click(function(){ var txt = $(this).text(); if(txt=='More'){ /* * change the text to "Less" * change the background color to "red" * which means it shows all the options */ $(this).text('Less'); $(this).css("background-color","red"); } else{ /* * change the text to "More" * change the background color to "green" * which means it hides other options */ $(this).text('More'); $(this).css("background-color","green"); } /* * to animate the container of other options * we use jQuery "next" to select the "moreOptions" of the current row */ $(this).next(".moreOptions").slideToggle("fast"); // so that it won't refresh the page return false; }); }); </script>
Codes combined:
<html> <head> <title>A Way To Solve Long List Of Options Of Your Table Row Data</title> <!-- just some styling --> <style> body{ font-family:arial,sans-serif; } table a{ color:#039; font-weight:bold; text-decoration:none; } table a:hover{ color:#000; font-weight:bold; } th { background-color:#b9c9fe; color:#039; padding: 10px; } td { background-color:#e8edff; padding: 10px; } .verticalOption{ margin:8px 0; } .moreOptionsLink{ background-color:green; color:#fff; padding: 0 2px; } .moreOptionsLink:hover{ color:#fff; } .moreOptions{ display:none; } </style> </head> <body> <!-- our example table --> <table border='0' cellpadding='2'> <tr> <th>Firstname</th> <th>Lastname</th> <th>Email</th> <th>Username</th> <th>Options</th> </tr> <tr> <td>JM</td> <td>Dalisay</td> <td>jm@gmail.com</td> <td>dalisay</td> <td> <!-- It is important to understand our "Options" HTML structure. --> <a href="">Edit</a> / <a href="">Delete</a> / <a href="" class="moreOptionsLink">More</a> <!-- Here are the hidden "moreOptions" which will be shown when "More" was clicked and hidden when "Less" was clicked --> <div class="moreOptions"> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Articles</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">View Online</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Website</a> </div> <div class="verticalOption"> <a href="https://www.facebook.com/CodeOfANinja" target="_blank">Facebook</a> </div> <div class="verticalOption"> <a href="http://twitter.com/ninjazhai" target="_blank">Twitter</a> </div> <div class="verticalOption"> <a href="https://plus.google.com/103126728967620382717" target="_blank">Google+</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">LinkedIn</a> </div> </div> </td> </tr> <tr> <td>Edward</td> <td>Morden</td> <td>edward_cullen@yahoo.com</td> <td>edward</td> <td> <a href="">Edit</a> / <a href="">Delete</a> / <a href="" class="moreOptionsLink">More</a> <div class="moreOptions"> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Articles</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">View Online</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Website</a> </div> <div class="verticalOption"> <a href="https://www.facebook.com/CodeOfANinja" target="_blank">Facebook</a> </div> <div class="verticalOption"> <a href="http://twitter.com/ninjazhai" target="_blank">Twitter</a> </div> <div class="verticalOption"> <a href="https://plus.google.com/103126728967620382717" target="_blank">Google+</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">LinkedIn</a> </div> </div> </td> </tr> <tr> <td>Vanessa</td> <td>Hudgens</td> <td>vane@yahoo.com</td> <td>vanessa</td> <td> <a href="">Edit</a> / <a href="">Delete</a> / <a href="" class="moreOptionsLink">More</a> <div class="moreOptions"> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Articles</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">View Online</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Website</a> </div> <div class="verticalOption"> <a href="https://www.facebook.com/CodeOfANinja" target="_blank">Facebook</a> </div> <div class="verticalOption"> <a href="http://twitter.com/ninjazhai" target="_blank">Twitter</a> </div> <div class="verticalOption"> <a href="https://plus.google.com/103126728967620382717" target="_blank">Google+</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">LinkedIn</a> </div> </div> </td> </tr> <tr> <td>Michael</td> <td>Jackson</td> <td>mike@gmail.com</td> <td>michael</td> <td> <a href="">Edit</a> / <a href="">Delete</a> / <a href="" class="moreOptionsLink">More</a> <div class="moreOptions"> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Articles</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">View Online</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">Website</a> </div> <div class="verticalOption"> <a href="https://www.facebook.com/CodeOfANinja" target="_blank">Facebook</a> </div> <div class="verticalOption"> <a href="http://twitter.com/ninjazhai" target="_blank">Twitter</a> </div> <div class="verticalOption"> <a href="https://plus.google.com/103126728967620382717" target="_blank">Google+</a> </div> <div class="verticalOption"> <a href="http://codeofaninja.com/" target="_blank">LinkedIn</a> </div> </div> </td> </tr> </table> <!-- include our jQuery --> <script src="js/jquery-1.9.1.min.js"></script> <script> $(document).ready(function(){ // when "More" or "Less" (class moreOptionsLink) was clicked. $(".moreOptionsLink").click(function(){ var txt = $(this).text(); if(txt=='More'){ /* * change the text to "Less" * change the background color to "red" * which means it shows all the options */ $(this).text('Less'); $(this).css("background-color","red"); } else{ /* * change the text to "More" * change the background color to "green" * which means it hides other options */ $(this).text('More'); $(this).css("background-color","green"); } /* * to animate the container of other options * we use jQuery "next" to select the "moreOptions" of the current row */ $(this).next(".moreOptions").slideToggle("fast"); // so that it won't refresh the page return false; }); }); </script> </body> </html>
The Code of a Ninja Resources
For FREE programming tutorials, click the red button below and subscribe! :)
website