jQuery css()函数不会应用IE hack属性

时间:2009-12-18 19:09:25

标签: jquery css internet-explorer

我正在尝试将内联块样式应用于元素(特定的div)。为了在IE中实现这一点,你必须使用hack:

$('#element').css(
    {
        'display'  :    'inline-block',    //applies inline-block to matched elements in all browsers except IE due to hasLayout bug
        'zoom'     :    1,                 //set hasLayout to 'true' in IE
        '*display' :    'inline'           //use asterisk to only apply 'inline' style to IE
    }
);

然而,css()函数似乎向浏览器呈现样式,使得'* display'不在IE中注册,因此不应用'inline'样式。

关于为什么和/或如何解决这个问题的任何想法?

4 个答案:

答案 0 :(得分:2)

我认为应该这样做:

if($.browser.msie){
    $('#element').css({'display' : 'inline'});
}

答案 1 :(得分:1)

jQuery将过滤掉“坏”的css属性 - 即。使用css函数时会破解。

但是,你在jvascript中 - 做JAVASCRIPT中的检测。没有理由使用黑客,因为您可以使用各种工具来检测IE,而不仅仅是版本。 Rambo的解决方案已足够: - )

答案 2 :(得分:0)

如上所述,jQuery不会让你应用无效的属性。无论如何你需要这样做,把它们放在一个CSS类中,用addClass()和removeClass()来关闭和打开类。

答案 3 :(得分:0)

我认为你可以试试css('display','inline')