2013-11-04 70 views
0

我有这样的CSS表(这只是一个行),这是在屏幕删除使用Javascript/jQuery的

#bottomBar td { 
filter: progid:DXImageTransform.Microsoft.Gradient(starColorStr=#1c67c0, endColorStr=#03389d); 
padding: 10px !important; 
color: white; 
border: 2px solid white !important; 
font-weightL bold !important; 
cursor: pointer; 
} 

正如你所看到的底部位置一定CSS,过滤器是存在的只是对于IE 8.我需要IE 10这个兼容一样,所以我需要删除的过滤器,取而代之的是,让我们说

background-color: blue; 

给予TD一些颜色。我想这

if (Function('/*@cc_on return [email protected]*/')()) { // this checks if it is IE 10 
$('#bottomBar td').removeAttr('style'); 
$('#bottomBar td').attr('style', 'background-color: blue; padding: 10px !important; color: white; border: 2px solid white !important; font-weight: bold !important; cursor: pointer;') 

,但不工作,我也尝试了将

$('#bottomBar td').css('filter',''); 

的,如果IE 10功能内,但不工作,要么..任何其他的想法?

请注意,我无法删除或添加类,长话短说我有一个非常长的脚本,如果我添加和删除类,代码会中断。我也不能有一个外部样式表,对不起,我没有在帖子中提到这一点。 (我知道只有ie10样式表是最好的,但是我正在编写代码的人需要以某种方式完成)。

+1

是否有任何理由不能将滤镜部件拉出到它自己的css类中?那么你可以简单地使用add \ remove类呢? –

+1

将规则放入页面内的IE条件注释块中,并使用IE样式表或样式标签 – charlietfl

+0

@KyleMuir嗯是的,我有一个非常长的脚本,它会打破如果我添加一个类到它 – user2817200

回答

1

如果我的理解是正确的,你可以做到以下几点:

if (Function('/*@cc_on return [email protected]*/')()) { // this checks if it is IE 10 
    $('#bottomBar td').css('filter', 'none'); 
    $('#bottomBar td').css('color', 'red'); 
    $('#bottomBar td').css('cursor', 'default'); 
    ... 
} 

的过滤器的默认值是nonehttps://developer.mozilla.org/en-US/docs/Web/CSS/filter),所以将其设置为这你应该删除不管它在做什么。

在下面的示例中,我将IE10中的文本颜色更改为红色,并且光标将成为默认光标,在任何其他主要浏览器中,它将是白色文本和手形光标。

小提琴:http://jsfiddle.net/KyleMuir/8mxem/5/

+0

Gr,这似乎并不适用于我的代码,我的脚本中必须有一些CSS或者JS,它阻止了它,好吧然后我将通过我的整个代码,并找到为什么设置筛选器没有为我工作..谢谢 – user2817200

+0

道歉,请看我编辑的小提琴 - 它有很多问题,这些问题已经修复,希望它有帮助:)我坚持任意改变文本的颜色。 –

+1

另外,你的css中有很多'!important'标签 - 你不能重写这些标签。看到这里:http://css-tricks.com/override-inline-styles-with-css/ –

3

如果您正在运行到了很多特定浏览器的造型问题,那你可以考虑的事情之一,是利用JS添加标识有关浏览器的细节body -level类用户正在使用。例如:

  • 火狐:<body class="ff">
  • IE10:<body class="ie10">
  • IE7:<body class="ie7 ielt10">(。ielt10 = “IE,小于10”,即,IE浏览器版本9或以上)

尽管我们都希望编写适用于所有浏览器的代码,但我们都知道这种情况不会发生。 :)建立这样的框架可以很容易地解决CSS中浏览器特定的样式。如果设置了这个样子,那么你就可以改变你的CSS是这样的:

#bottomBar td { 
    padding: 10px !important; 
    color: white; 
    border: 2px solid white !important; 
    font-weight: bold !important; 
    cursor: pointer; 
} 

.ie8 #bottomBar td { 
    filter: progid:DXImageTransform.Microsoft.Gradient(starColorStr=#1c67c0, endColorStr=#03389d); 
} 

现在,只有IE8浏览器将添加过滤器。

建立JS的前台工作有点麻烦,但一旦到位,它就可以解决那些必须解决的浏览器特定问题,而且更容易。

+0

好主意,我会牢记这一点,我已经开始我的代码,并进入它的方式,但下一次我会肯定这样做。 – user2817200