First, combine duplicate code into a single function: $(document).ready(function() { zebra(); $('th').click( zebra ); });
function zebra() { $('tbody.bevker tr:odd').removeClass(); $('tbody.bevker tr:even').removeClass(); $('tbody.bevker tr:odd').addClass('row0 odd'); $('tbody.bevker tr:even').addClass('row1 even'); return false; } I also took the liberty of changing the indentation style slightly - you're using two levels of indentation where one would do (by giving the braces their own separate indentation). Naturally you can do this any way you want, but I didn't see any benefit to the extra indents, so bear with me. :-) In addition, I used spaces for indents instead of tabs. I actually do prefer tabs, but in an email message the spaces sometimes work better. Next, use chaining to remove the duplicate $() selectors: function zebra() { $('tbody.bevker tr:odd').removeClass().addClass('row0 odd'); $('tbody.bevker tr:even').removeClass().addClass('row1 even'); return false; } Also, since you are completely replacing the class, it would be faster to do it in one call: function zebra() { $('tbody.bevker tr:odd').attr( 'class', 'row0 odd' ); $('tbody.bevker tr:even').attr( 'class', 'row1 even' ); return false; } Then, if there is only a single table you're working with, you can speed up the code a little by pulling out the common part of the selector: function zebra() { var tbody = $('tbody.bevker')[0]; $('tr:odd',tbody).attr( 'class', 'row0 odd' ); $('tr:even',tbody).attr( 'class', 'row1 even' ); return false; } This would not work if you have multiple tables, but it looks like the code is already assuming a single table. You could also set both the even and odd row classes in a single pass. This would probably be even faster: function zebra() { $('tbody.bevker tr').each( function( i ) { $(this).attr( 'class', i % 2 ? 'row1 even' : 'row0 odd' ); }); return false; } Or better yet, speed up that inner loop by using the DOM directly instead of .attr(): function zebra() { $('tbody.bevker tr').each( function( i ) { this.className = i % 2 ? 'row1 even' : 'row0 odd'; }); return false; } I may have the even and odd reversed on the last two examples, but that's easy to fix. -Mike > From: FrankTudor > > Here is a bit of code that on page load sets the alternating > color of a table. > > Then there is a table sort tool that loads as well. The th > (header) clicks cause the nice alternating line colors to > sort as well. So I created this, which works perfect, but it > looks clunky/repetitive.. > > I was thinking about wrapping an if statement in here > somewhere, or maybe there is something else other people can think of. > > <script type="text/javascript"> > $(document).ready(function() > { > $('tbody.bevker tr:odd').removeClass(); > $('tbody.bevker tr:even').removeClass(); > $('tbody.bevker tr:odd').addClass('row0 odd'); > $('tbody.bevker tr:even').addClass('row1 even'); > > $('th').click(function() > { > $('tbody.bevker tr:odd').removeClass(); > $('tbody.bevker tr:even').removeClass(); > $('tbody.bevker tr:odd').addClass('row0 odd'); > $('tbody.bevker tr:even').addClass('row1 even'); > return false; > } > ); > } > ); > </script>