如何使用jquery将td的总背景颜色设置为红色?
问题描述:
我尝试使用下面的代码来获取设置为红色但不工作的背景色的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);
});
答
你在你的代码的两个问题。
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:很高兴帮助:) –
答
您应该使用类而不是ID,并在逻辑上应该遵循@Milind答案,完美的作品。 由于Id是在页面中应该包含唯一值的属性,但是您将相同的ID分配给多个TD,因此在这种情况下更好地使用class。
你需要罚款的td然后得到的长度。我建议在td上添加一个类,你把红色作为背景,然后获得该类的长度。 – guradio