2011-12-23 99 views
3

這會使Firefox/Chrome中的圖層變細 - 但在IE8中,它不會提供圖層不透明度。不透明度在IE8上不可用

$('document').ready(function() { 
    $('.out-of-stock').each(function() { 
    $('.productImage', $(this)).css('opacity', '.25'); 
    $('.stockMessage', $(this)).removeClass('stockMessageOff'); 
    $('.stockMessage', $(this)).addClass('stockMessageOn'); 
    $('.stockMessage.stockMessageOn', $(this)).css('opacity', '1').text('Sold Out'); 
    }); 
}); 

我讀過幾個關於分配zoomover的貼子:1;到CSS類,但這並沒有解決它。

任何想法的人? :)

回答

2

正如本頁所述:http://www.quirksmode.org/css/opacity.html IE8(及以下版本)不支持不透明度,因此您必須使用由Fabian提供的相當笨重的代碼。

我認爲,一個更簡單的選擇是簡單地做什麼Madmartigan建議和使用jQuery的fadeTo() - 方法,因爲它會滿足所有現代(和不那麼現代)的瀏覽器:

$('.productImage').fadeTo(0, .25); 

我也注意到一些你的代碼中可以改進的東西。僅使用.class選擇器比提供標記名稱要慢,而且jQuery必須遍歷每個元素並匹配類而不僅僅是img(例如)元素。你還沒有充分利用jQuery的能力鏈的方法調用它不僅加快了一點,但也使代碼整潔:

$(function() { 
    $('div.out-of-stock').each(function() { 
    $('img.productImage', this).css('opacity', '.25'); 

    $('p.stockMessage', this).removeClass('stockMessageOff').addClass('stockMessageOn').css('opacity', '1').text('Sold Out'); 
    }); 
}); 

只是一個提示! :)

2

這應該IE8

$('.productImage', $(this)).css('-ms-filter','progid:DXImageTransform.Microsoft.Alpha(Opacity=25)'); 

工作,爲跨瀏覽器支持嘗試使用此:

$('.productImage', $(this)).css({'-ms-filter':'progid:DXImageTransform.Microsoft.Alpha(Opacity=25)','filter':'alpha(opacity=25)','-moz-opacity':'0.25','-khtml-opacity':'0.25','opacity':'0.25'}); 
1

使用此:

$('.productImage').fadeTo('fast', .25); 

希望它能幫助。