2009-12-18 20 views
1

我试图将内联块样式应用于元素(具体为div)。而为了在IE中实现这一点,你必须使用一个黑客:jQuery的css()函数将不适用IE破解属性

$('#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()函数似乎风格呈现给浏览器,使得“*显示”不能在IE和注册因此不适用'内联'风格。

有关为什么和/或如何解决此问题的任何想法?

+0

太棒了,谢谢大家! – tscully 2009-12-18 20:36:53

回答

2

我想这应该这样做,那么:

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

jQuery文档特别建议在jQuery.browser上使用jQuery.support,因为.browser依赖于User-Agent,这是一团糟。 – Aaron 2009-12-18 19:17:06

+0

我看到了,但对于如何获取浏览器类型并不十分清楚。 – tscully 2009-12-18 19:18:05

+0

你错过了他的'{'zoom':1}':-) – prodigitalson 2009-12-18 19:24:18

1

jQuery是要筛选出 “坏” 的CSS属性 - 即。使用css函数时会引发黑客攻击。

但是,你在jvascript中 - 做在JavaScript中的检测。没有理由使用黑客攻击,因为您可以使用各种工具来检测IE和版本。兰博的解决方案是足够的:-)

0

如上所述,jQuery不会让你应用无效的属性。如果您仍然需要这样做,请将它们放入CSS类中,然后使用addClass()和removeClass()关闭该类。

0

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

+0

你觉得呢?我认为这会更适合作为评论。 – 2012-12-12 03:45:12