+1  A: 

In order to set the opacity of a transparent PNG image, you need to use the AlphaImageLoader filter, even in IE8.

EDIT: You also need to add the alpha filter in the CSS, like this:

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="path", sizingMethod="scale"),alpha(opacity=100);

Otherwise, jQUery will clear the existing filter as it adds the alpha filter.

SLaks
loading the image using alphaImageLoader the 'hover' image shows at page load, then when you hover over the link it disappears untill you refresh the page.How can i fix this?
Hailwood
@Hailwood: I forgot to mention that you need also to explicitly add the `alpha` filter in the CSS.
SLaks
A: 

This post from Dave Shea's mezzoblue.com may help you: http://mezzoblue.com/archives/2010/05/20/ie8_still_fa/

It notes all of the methods which he tried, and the final solution he arrived at the end:

What did work was a little library called DD_belatedPNG that applies PNG transparency via VML instead of AlphaImageLoader. It’s designed for IE6, but it works just fine in IE7 as well. For IE8, I was forced to throw out an X-UA-Compatible meta tag and step IE8 down to IE7 mode for this particular page.

With a tiny caveat at the end

It’s still not perfect. I noticed a faint white bounding box poking through at lower opacities that forced me to slightly adjust hover effects for all versions of IE. But you know, for all that, it’s darn well good enough.

Yi Jiang