2011-10-01 115 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

相關問題