2011-05-14 104 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'); 
});