2011-05-14 107 views
2

嗨,我写了一个代码来改变tr的css(颜色字体)。但它不工作。如果我romve如果条件和使用$(this).css(“color”,“white”);那么它完美的工作。但是当我这样做,如果条件它不能改变文字颜色。我在做什么这个错了。谢谢。jquery颜色变化不起作用

$('tr').click(function() { 
     $(this).toggleClass('hilite');   
     //$(this).css("color","white"); 
     if($(this).css("color") == "black"){ 
      alert("In first if"); 
      $(this).css("color","white"); 
     }else{$(this).css("color","black");} 
    }); 

回答

2

如果你看看$(this).css("color")返回值我怀疑(例如,in a debugger),你会发现,它不是“黑”,而是“RGB(0,0,0)”或类似的。 (您可以see it here   —我在Chrome中获得“rgb(0,0,0)”,也许还有很多其他浏览器。)您需要处理该问题,或者通过跟踪颜色(或者可能基于您的“hilite”[原文]类)或解析结果。

当然,最好的事情是让你的“hilite”类控制文本和背景颜色,所以你不必在JavaScript中完成它。例如,用这个规则:

tr.hilite, tr.hilite td, tr.hilite th { 
    background-color: black; /* Or whatever your dark background color is */ 
    color: white; 
} 

题外话每次你打电话$(),有多个函数调用,并涉及到内存分配,所以如果你打算这样做连续几次,最好抓住结果并重复使用。

$('tr').click(function() { 
    var $this = $(this);    // Grab it once 
    $this.toggleClass('hilite');  // Use it throughout 
    //$this.css("color","white"); 
    if($this.css("color") == "black"){ // (You'll still need to fix this) 
     alert("In first if"); 
     $this.css("color","white"); 
    }else{$this.css("color","black");} 
}); 
+0

嗨,感谢它的工作,只需添加一个css类:)。我还没有看到如果条件,但我会尝试这也是通过调试我得到正确的颜色值,我给的是“黑色”。再次感谢很多:) – 2011-05-14 10:42:42

+0

我在Opera中获得'#000000' – 2011-05-14 10:43:40

+0

@Sydenam:是的,可悲的是这些事情并不一致。 :-( – 2011-05-14 10:48:04

2

利用类而不是处理.css调用。通过调用.hasClass('foo')可以轻松检查某个元素是否具有类。

也许这就是'hilite'类的用途?如果是这样,你可以更改为:

$('tr').click(function() {   
    if($(this).hasClass("hilite")){ 
     alert("In first if"); 
    } 
    $(this).toggleClass('hilite'); 
});