2011-10-01 107 views
2

更新:此问题已得到解决。jQuery .css()不适用于IE 6,7,8和Firefox,但可用于Chrome,Safari,Opera

我试图通过JavaScript更改Assistly站点的默认样式,因为样式表不能由我编辑。在Chrome,Safari,Opera和IE9中运行良好;但不在IE 6,7,8或任何Firefox中。

在下面的代码中,设置h2和图像的前两行代码适用于所有浏览器,但.css()行不是。为什么.css()在某些浏览器中不起作用?

这是代码。

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$("#support-header .wrapper h2").first().html('<h2>Real Estate Help</h2>'); 
$("#company-header .wrapper").html('<a href="http://help.mysite.com/"><img src="http://www.mysite.com/logo-red.png" /></a>'); 
$("body").css({'background': '#FFFFFF !important'}); 
$("#company-header").css({'background': 'none !important'}); 
$("#support-header").css({'background': 'none !important', 'border-bottom': 'none', 'padding': '0'}); 
$("#company-support-portal").css({'background-image': 'url(http://www.mysite.com/container-bg2.jpg) !important', 'background-repeat': 'repeat-x', 'margin-top': '10px'}); 
}); 
</script> 
+0

链接请到现场? –

+2

这些空格应该在文件名中吗?那么所有这些“重要”呢?请致电 – GolezTrol

+1

[SSCCE](http://sscce.org)。 –

回答

0

在IE浏览器,它的工作原理以及使用

element.css('property', 'value') 

虽然你那么需要为每个属性单独的一行。

注意:您可以轻松地指定重要的有

$.('#elid').css('display', 'block !important') 
2

从代码中删除!important!important只能在样式表中使用,不能在内联属性中使用。

+0

删除它们使JavaScript无法在任何浏览器中使用。 – kfawcett

+2

@kfawcett - 那是因为你已经严重过度使用样式表中的'!important'。 '重要的'应该被认为是最后的手段。 – Spudley

4

我会加入别人的评论:我怀疑问题可能与!important标志有关。

问题是为什么你需要它?你将它设置为内联样式,因此无论如何都应该覆盖任何其他样式;唯一不会被内联样式默认覆盖的是另一种标记为!important的样式,所以我假设这就是您要做的。

问题是,只要你使用!important,你基本上告诉浏览器,这种风格应该胜过其他所有东西;继承和优先顺序不在窗口中。

如果在同一元素上有多个!important样式,则两者的优先级相同,因此您无法确定将会发生什么。有些浏览器会选择一个,另一个浏览器。

真正的教训是避免在样式表中使用!important,除非它是绝对不可避免的,并且肯定会避免它随后会要覆盖的任何内容。

由于CSS按优先顺序和继承顺序排列事物的方式,事实上很少有实际需要!important的情况。几乎总是有一种替代(更好)的方法。

所以简短的回答:重新处理样式表以摆脱!important标记。你的jQuery代码不会正常工作,直到你这样做(实际上,在你的网站上查看!important标记的数量,你自己的CSS可能已经在努力让事情正确)

+0

斯普德利,正如我在其他评论中所说的。我无法删除样式表中的重要内容!它不属于我,它由Assistly拥有。 所以问题是.... **我该如何删除样式表中不可编辑的样式?** 我遇到过这个网站,但是我一直没能找到它工作。 http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript 任何想法如何删除不能编辑的样式表中的CSS,并通过Javascript添加我自己的样式? – kfawcett

+0

@kfawcett - 在样式表中使用'!important'的方式是质量差的代码,所以Assistly反映很差。如果可能的话,我会建议尝试找到一种替代该样式表的方法,因为它是所有问题的根源。有了这么多'!重要',它将严重妨碍您根据网站调整网站的外观和感觉。黑客可能会有所帮助,但从长远来看,这并不能解决问题。如果您能够添加Javascript代码,那么希望您可以更改页面模板?只需更改CSS URL,然后加载自己的样式。 – Spudley

+0

实际查看代码时,样式是内部的,而不是外部样式表。我怎样才能通过JavaScript或jQuery来改变它们? – kfawcett

相关问题