2014-02-25 68 views
0

我無法使這個腳本工作。我在網上搜索,我找不到任何好的答案。關於jquery .css方法

$(document).ready(function() { 

$("#container").click(function(){ 
    var color = $(this).css("background"); 
    if(color == "#ffffff"){ 
     $(this).css("background", "#e1e1e1"); 
    } 
    else { 
     $(this).css("background", "#ffffff"); 
    } 

}); 

}); 

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link rel="stylesheet" href="css/stylesheet.css" type="text/css" /> 
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script> 
<script src="js/script.js" type="text/javascript"></script> 
<title>Document sans nom</title> 
</head> 

<body> 

<div id="container"> 

    <a href="#" class="a">Start</a> 

</div> 

</body> 

</html> 
+1

你也可以分享你的HTML或在jsFiddle上重新創建你的頁面嗎? – Knelis

回答

3

因爲.css('background')可能不會返回格式的顏色,你認爲它是基於瀏覽器,它可能會返回一個十六,RGB或RGBA格式

$(document).ready(function() { 
    $("#container").click(function() { 
     $(this).css("background-color", function() { 
      var color = $(this).data("background") == '#e1e1e1' ? '#ffffff' : '#e1e1e1'; 
      $(this).data('background', color); 
      return color; 
     }); 
    }); 
}); 
返回,

演示:Fiddle


但一個更爲簡單的解決方案是使用toggleClass()之類

#container { 
    background-color: #ffffff; 
} 
#container.toggled { 
    background-color: #e1e1e1; 
} 

然後

$(document).ready(function() { 
    $("#container").click(function() { 
     $(this).toggleClass('toggled'); 
    }); 
}); 

演示:Fiddle

+0

工作正常;謝謝 – David

+0

@大衛如果這回答你的問題,你應該接受這個答案作爲正確的答案,通過點擊旁邊的複選標記。 –

0

您需要使用.css("background-color");但這會返回一個RGB不是十六進制,所以你需要稍微修改你的代碼。

希望這可以幫助