jQuery table fade doesn’t work in IE7
While working on an up-and-coming web service, I found that apparently Internet Explorer does not cope well with fading <table>
elements using jQuery. Here’s what I was doing:
tbl = $('#primaryColumn table'); loading = $('#primaryColumn .loading'); tbl.fadeTo(300, 0.0, function() { loading.show(); tbl.load('/contacts/{pagination:page}/' + page_num + '?ajax&search={pagination:search}', function() { loading.hide(); tbl.stop().fadeTo(300, 1.0, function() { tbl.css('opacity', 'auto'); // removing the CSS opacity rule restores the ClearType anti-aliasing in IE }); }); });
For some reason, the fadeIn()
, fadeOut()
, and fadeTo()
effects do not work on <table>
elements in IE, although they work great in Firefox and Opera. This also applies when using animate()
to alter the CSS opacity
rule (yeah, I tried them all).
As usual, the solution proved to be very easy: don’t animate the <table>
, rather, wrap the <table>
in a <div>
and animate that. The only change required is the first line:
tbl = $('#primaryColumn div#table_div');
Bingo! Another three-hour bug-swatting episode reinforcing my hatred for Microsoft browsers of all versions just concluded.