2015-01-15 66 views
0

我在我的頁面上有一個div,我想通過單擊它來更改其背景。背景可以是「透明的」,無顏色,或紅/粉紅色。更改div背景firefox vs chrome

我有檢查當前背景顏色並改變它基於該JavaScript函數:

if (buttonBackground == "transparent") { 
       //"rgba(0, 0, 0, 0)") { 
$('#delete_button_container_' + buttonNumber).css('background-color', '#ff9494'); 

} else if (buttonBackground == "rgb(255, 148, 148)") { 

$('#delete_button_container_' + buttonNumber).css('background', 'none'); 

} 

的問題是,對於一個透明的顏色,鉻讀取background-color屬性爲"rgba(0, 0, 0, 0)"但Firefox將其讀作"transparent"。然而,他們都閱讀背景顏色屬性與顏色'#ff9494'爲"rgba(0, 0, 0, 0)"

所以這顯然是一個問題,如果我有if(透明)chrome不起作用,如果我有if (reba(0000))firefox不起作用。有想法該怎麼解決這個嗎?

+2

** **從未依靠瀏覽器返回正確的顏色,使用一個變量作爲標誌,而不是 – adeneo 2015-01-15 15:32:49

+0

也許用一個例子的答案幫助;) – 2015-01-15 15:34:10

+0

沒有足夠的代碼來做到這一點! 'buttonNumber'來自哪裏,這是一個循環,你需要每個元素被改變的標誌,如果'data'有用,但是如何? – adeneo 2015-01-15 15:35:20

回答

1

我會用一個類來解決這個問題。您可以讓delete_button_container的默認狀態爲透明或顏色,這並不重要,但可以添加一個覆蓋該默認值的類來設置顏色。

HTML:

<div class="deleteButtonContainer transBackground"></div>

JS:

if($('#delete_button_container_' + buttonNumber).hasClass('transBackground')){ 
$(this).removeClass('transBackground'); 
} else { 
$(this).addClass('transBackground'); 
} 

CSS:

.deleteButtonContainer{ 
    background-color: rgb(255, 148, 148); 
} 

.deleteButtonContainer.transBackground{ 
    background-color: none; 
} 

編輯:改變了選擇器的ID OP用使用。

+0

hmmm ... true但我無法做到這一點,我已經使用類/ Id爲其他功能的原因,我相信...我將不得不看看我是否可以改變這一點,並使用這種方法 – 2015-01-15 15:42:47

+0

你可以添加儘可能多的課程,你想要的!而removeClass只會刪除那個類,所以你不需要擔心你設置的其他任何東西。 – 2015-01-15 15:44:15

+0

哦,我不知道,謝謝你的信息! – 2015-01-15 15:44:58

0

感謝意見,我做了以下內容和它的工作:

var transparent = false; 
if (buttonBackground == "transparent" || buttonBackground == "rgba(0, 0, 0, 0)") { 
       transparent = true; 
} 

if (transparent) { 
       //"rgba(0, 0, 0, 0)") { 
$('#delete_button_container_' + buttonNumber).css('background-color', '#ff9494'); 

} else if (buttonBackground == "rgb(255, 148, 148)") { 

$('#delete_button_container_' + buttonNumber).css('background', 'none'); 

} 
+1

您仍然依賴瀏覽器返回的內容。如果用戶有一箇舊的瀏覽器出於某種原因返回了十六進制,則全部失敗。 – adeneo 2015-01-15 15:40:52

+0

你在殺我:)我猜下面的答案是更好的 – 2015-01-15 15:41:19

+0

理論上它是,但你根本不需要添加類或改變DOM,你可以使用jQuery的'data'來存儲狀態,全部你需要的是一個真或假的價值。 – adeneo 2015-01-15 15:42:22