2013-01-06 35 views
1

我知道這是一個老問題,類似的問題(解決)更加複雜。但我已經嘗試過,並且無法自己弄清楚。通過css/javascript更改指定的樣式?

<div style="color:white; padding:10px">Text</div> 

我想它的顏色變爲紅色:

div[style*="color:white"]{color:red} 

$('div').filter(function() { 
    return $(this).css('color') == 'white'; 
}).css("color", "red"); 

我都嘗試CSS和JavaScript,帶或不帶空格,用十六進制或RGB顏色代碼。

+0

我認爲你的return語句只是返回true而不是元素。無論如何,你得到什麼類型的錯誤? –

+0

你有沒有試過'console.log'或'alert'?你會立刻看到發生了什麼......'console.log($(this).css('color'))' – elclanrs

回答

3

的問題是,它不返回你期待什麼。它實際上返回一個RGB字符串rgb(255, 255, 255),而不是'白色'。改變這一點,你是金。

Example JSFiddle

0

你正在做一些非常時髦的事情,不應該像這樣使用過濾器函數。要選擇一個DOM元素,改變它的CSS與jQuery做這個$('div').css({'color': 'red'});

這裏的工作example

爲了正確介紹jQuery的我由amazing Chris Coyer

0

內聯CSS推薦這個視頻接管任何內部或外部樣式表。如果您有能力刪除該特定元素上的內聯CSS,並將其替換爲<div class="myElememt"></div>之類的內容,那將是理想選擇。至於使用jQuery我得到了它通過使用CSS方法,無需過濾器來改變:

$('div').css('color', 'blue'); 
2

其實$(this).css('color')回報rgb(255, 255, 255)所以你可以使用(),下一句是寫的CSS的

$('div').filter(function() { 
    return $(this).css('color') == 'rgb(255, 255, 255)'; 
}).css("color", "red"); 

Example.

+0

非常感謝! (但我會將Apropos的答案標記爲我的T-up,因爲他快了10秒^ _ ^) – Cindy

+0

@Cindy,夠了:-) –

1

jQuery的API文檔。 「

」不同的瀏覽器可能會返回邏輯上但文本上不相等的CSS顏色值,例如#FFF,#ffffff和rgb(255,255,255)。「

所以,我認爲簡單的return $(this).css('color') == 'rgb(255, 255, 255)';也可能在未來有一些問題。

在這裏,我建議使用CSS類來實現它,如下所示:

.white{color:white;} 
.red{color:red;} 

$('div').filter(function() { 
    return $(this).hasClass('white'); 
}).removeClass('white').addClass('red'); 

爲什麼div[style*="color:white"]{color:red}不起作用,這是因爲內聯CSS具有最高優先級出的三種方式。

+0

非常感謝。幸運的是,我只想爲我做點事情。我無法更改HTML。 – Cindy