为什么jQuery代码不能改变Firefox中的背景颜色?

为什么jQuery代码不能改变Firefox中的背景颜色?,jquery,css,firefox,Jquery,Css,Firefox,我正试图掌握jQuery的诀窍,我有一段简单的代码,它拒绝工作。有人知道为什么这可能不起作用吗 <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("div").live("click",

我正试图掌握jQuery的诀窍,我有一段简单的代码,它拒绝工作。有人知道为什么这可能不起作用吗

<html>
  <head>

  <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){
      $("div").live("click", divclicked);
    });

    function divclicked()
    {
      if($(this).css("background-color") == "lightblue")
        $(this).css("background-color", "red");
    }
  </script>

  <style type="text/css">

      div
      {
         background-color: lightblue;
      }

  </style>

  </head>
  <body>
    <div id="testdiv">
      this is a test
    </div>
  </body>
</html>

尝试将脚本中的
背景色
更改为
背景色

if($(this).css("backgroundColor") == "lightblue")
  $(this).css("backgroundColor", "red");
DOM倾向于避免使用虚线名称,因为它们不是有效的JavaScript标识符


啊!保罗删除了他的答案,而我正在打评论。。。我没有意识到将“背景色”传递给
.css()
会做任何有用的事情,更不用说返回实际的RGB值了!在您的例子中,效果是相同的(因为您的逻辑需要精确地保留原始值),但仍然值得注意,以供将来参考


另外:如果您使用CSS类而不是依赖于能够直接读写样式,您将有一个更轻松的时间-jQuery非常好地使用CSS类,提供了简单的方法来创建和使用它们。

上面的答案可能是正确的

为了避免混淆js和css在语法上的差异,我倾向于使用JSON语法更改jquery中的css

$(this).css({'background-color':'red', height:'200px'});

然后,您需要记住的是两条始终有效的基本规则:逗号而不是冒号,并在任何连字符的属性名称周围加引号。

如果背景颜色样式是内联的,则此规则有效。但是,如果背景色样式放在样式表中,它将不起作用。如果背景色样式放在样式表中,则只能使用计算样式(rgb(173216230))。最好改用类名。正确。css仅适用于内联样式。如果要使用如上所述的样式表,您需要检查应用类。很抱歉删除了答案,我想您的答案已经涵盖了所有内容。:)是的,我一直在用rgb数字计算样式。我想我被类名难住了。
$(this).css({'background-color':'red', height:'200px'});