2015-09-28 117 views
0

我嘗試使用下面的代碼來獲取設置爲紅色但不工作的背景色的td的總數。如何使用jquery將td的總背景顏色設置爲紅色?

 $("#totalBackgroundTdRed").css("background","red").length; 

正確長度應爲25 TD誰的背景色設置爲紅色,但上面的代碼顯示1

$("#findRows").live("click", function(event) 
    { 
     var findArray = []; 
     $(".findText").each(function() 
     { 
      findArray.push($.trim($(this).text())); 
     });  

     var findArrayLength = findArray.length; 
     var pattern = /^(?:[0-9]+\.\s+)?(.*):/; 

     $("#logTable tr").find(".column2").each(function(event) 
     { 
      var patternResults = pattern.exec($.trim($(this).text())); 

      for(var i = 0; i < findArrayLength; i++) 
      {    
       if(patternResults[1] == findArray[i]) 
       { 
       var $currentTR = $(this).closest("tr"); 
       $currentTR.find(".inputTD").css("background","red"); 
       $currentTR.find(".inputTD input").prop("checked", true); 
       } 
      }  
     }); 
      alert($("#totalBackgroundTdRed").css("background","red").length); 
    }); 
+0

你需要罰款的td然後得到的長度。我建議在td上添加一個類,你把紅色作爲背景,然後獲得該類的長度。 – guradio

回答

2

你在你的代碼的兩個問題。

1)您有td元素的重複ID,即totalBackgroundTdRed。 ID應該是唯一的。您可以使用與classname相同的值,然後使用類選擇器來定位它們。

$(".totalBackgroundTdRed") 

2)你需要使用過濾器功能的基礎上篩選條件的元素:

var columns = $('.totalBackgroundTdRed').filter(function(){ 
    var color = $(this).css("background-color").toLowerCase(); 
    return color === "#FF0000" || color === "rgb(255, 0, 0)" ; 
}); 
alert(columns.length); // 25 
+0

感謝Milind爲我帶來了一個解決方案,同時也提升了我的知識。 –

+0

@BruceWalker:很高興幫助:) –

0

您應該使用類而不是ID,並在邏輯上應該遵循@Milind答案,完美的作品。 由於Id是在頁面中應該包含唯一值的屬性,但是您將相同的ID分配給多個TD,因此在這種情況下更好地使用class。