2013-08-22 107 views
0

我想隱藏<tr>「基於<tr>一個<td>的背景顏色,那是我當前的代碼隱藏<tr>」基於<td>文本秒,但不是一個真正的好的解決方案該表是一個日曆,所以如果JQuery可以隱藏基於背景顏色的表格行,那將會很好。基於背景色的JQuery隱藏TD

我當前的代碼:

function ShowAbsence() 
{ 
    if(!presenceActive) clearPresence(); 
    $('table#newspaper-a tr:not(#header, #trWeekNummer)').each(function() { 
     var toggle1 = true; 
     $('td:not(#firstlastname)',this).each(function() { 
      if($(this).text() == "f" || $(this).text() == "M" || $(this).text() == "A") { 
       toggle1 = false; 
      } 
     }); 
     if(toggle1) { 
      $(this).toggle(); 
     } 
    }); 

    if(absenceActive) { 
     absenceActive = false; 
    } else { 
     absenceActive = true; 
    } 
} 

這工作得很好,但你可以看到它隱藏基於單元格中的文本。我希望你能幫助我根據背景色隱藏它!

+2

用途:'$(本)的.css('背景顏色')' –

+0

if($(this).css('background-color')==「#088A08」|| $(this).css('background-color')==「#088A08」|| $(這個).css('background-color')==「#D7DF01」) 不好運作 – BjornBogers

+0

@ArvindBhardwaj會返回一個RGB值,通常不需要。 – Alvaro

回答

1

您必須使用jQuery的$.css()函數,以便您可以獲取與選擇器關聯的顏色樣式。

這將返回一個RGB值(如RGB(255,0.221)),所以爲了將其轉換爲十六進制(類型#ff00dd的),你將需要使用此功能(提取from this other question):

function hexc(colorval) { 
    var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); 
    delete(parts[0]); 
    for (var i = 1; i <= 3; ++i) { 
     parts[i] = parseInt(parts[i]).toString(16); 
     if (parts[i].length == 1) parts[i] = '0' + parts[i]; 
    } 
    color = '#' + parts.join(''); 
    return color; 
} 

爲此,你可以這樣:

if (hexc($('#demo').css('background-color')) == '#ff00dd') { 
    alert("Works!!"); 
} 

活生生的例子:http://jsfiddle.net/vyQKV/1/

但是...

我會強烈建議你使用類而不是處理顏色。背景顏色應與不同類別和順序定義來檢查一個你應該檢查類$.hasClass()

例如:

if($(this).hasClass('redBackground')){ 
    //whatever 
} 
+0

好吧,我會嘗試你最後的編輯感謝您的快速響應。 – BjornBogers

+0

不僅用於快速響應。是一個很好的編程技術:) – Alvaro

+0

它完美的作品!謝謝,我將把這個標記爲正確的答案。 – BjornBogers