交替行颜色,除非单元格在jquery中已经有颜色

交替行颜色,除非单元格在jquery中已经有颜色,jquery,Jquery,我有此代码,它将行颜色交替为灰色和白色: $('tr:even').each(function(i){ $(this).find('td').css('background-color','white');}); $('tr:odd').each(function(i){ $(this).find('td').css('background-color','grey');}); 除了一些细胞是红色的。我该怎么做才能使交替排列的灰色和白色不会取代红细胞?上面的代码删除所有红细胞,并将其替换为白色

我有此代码,它将行颜色交替为灰色和白色:

$('tr:even').each(function(i){ $(this).find('td').css('background-color','white');});
$('tr:odd').each(function(i){ $(this).find('td').css('background-color','grey');});
除了一些细胞是红色的。我该怎么做才能使交替排列的灰色和白色不会取代红细胞?上面的代码删除所有红细胞,并将其替换为白色或灰色。谢谢。

您可以使用函数参数,如下所示:

var filter_red = function(){ return $(this).css('background-color') == 'rgb(255, 0, 0)'};
$('tr:even').not(filter_red).REST OF YOUR CODE..
您可以使用函数参数,如下所示:

var filter_red = function(){ return $(this).css('background-color') == 'rgb(255, 0, 0)'};
$('tr:even').not(filter_red).REST OF YOUR CODE..

你为什么不使用css来完成所有的工作呢:

tr:even td {
    background-color: grey;
}
tr:odd td {
     background-color: white;
}
tr:even td.red, tr:odd td.red {
    background-color: red;
}
旧浏览器黑客:

$(document).ready(function(){
  $('table tr:even').addClass('even');
  $('table tr:odd').addClass('odd');
});

tr.even td {
    background-color: grey;
}
tr.odd td {
     background-color: white;
}
tr.even td.red, tr.odd td.red {
    background-color: red;
}
如果它仍然不工作,听起来像是从另一台服务器应用了内联样式,在这种情况下,就像我讨厌使用的那样!重要的是,与缓慢的jquery解决方案相比,我更喜欢它:

$(document).ready(function(){
  $('table tr:even').addClass('even');
  $('table tr:odd').addClass('odd');
});

tr.even td {
    background-color: grey !important;
}
tr.odd td {
     background-color: white !important;
}
tr.even td.red, tr.odd td.red {
    background-color: red !important;
}

你为什么不使用css来完成所有的工作呢:

tr:even td {
    background-color: grey;
}
tr:odd td {
     background-color: white;
}
tr:even td.red, tr:odd td.red {
    background-color: red;
}
旧浏览器黑客:

$(document).ready(function(){
  $('table tr:even').addClass('even');
  $('table tr:odd').addClass('odd');
});

tr.even td {
    background-color: grey;
}
tr.odd td {
     background-color: white;
}
tr.even td.red, tr.odd td.red {
    background-color: red;
}
如果它仍然不工作,听起来像是从另一台服务器应用了内联样式,在这种情况下,就像我讨厌使用的那样!重要的是,与缓慢的jquery解决方案相比,我更喜欢它:

$(document).ready(function(){
  $('table tr:even').addClass('even');
  $('table tr:odd').addClass('odd');
});

tr.even td {
    background-color: grey !important;
}
tr.odd td {
     background-color: white !important;
}
tr.even td.red, tr.odd td.red {
    background-color: red !important;
}

一个用于奇数行或偶数行(不是两行都有!)的类将使这变得容易

$("tr").filter(":even").addClass("even");
css:


直接在元素上设置的样式将优先于样式表中的样式,因此,如果您的红色css直接在单元格上设置,它将覆盖。

奇数行或偶数行的类(不是两者!)将使这变得容易

$("tr").filter(":even").addClass("even");
css:



直接在元素上设置的样式将优先于样式表中的样式,因此如果您的红色css直接在单元格上设置,它将覆盖。

红色背景是如何设置的?使用css类名或作为单元格本身的
背景色
属性?e、 g.
?使用类而不是直接设置css,然后您可以使用css专用性来控制哪个颜色优先。此表是从远程服务器中提取的,但我希望这有帮助。remoteserver/sorttable.js“>”;td.alert{背景色:#FF0000;}红色背景是如何设置的?使用css类名或单元格本身的
背景色
属性?例如
?使用类而不是直接设置css,然后您可以使用css特性来控制哪个颜色优先。此表是从远程服务器提取的,但我希望这有帮助。remoteserver/sortttable.js“>”;td.alert{background color:#FF0000;}现有的浏览器实际上不会返回
红色
,但更可能的是
rbg(255,0,0)
?我正在尝试我的上述代码,并意识到,我已经将其更改为实际返回红色的代码。。谢谢。我尝试了上面的建议,使用了颜色#FF0000(红色),但它不起作用。现有的浏览器实际上不会返回
红色
,但更可能的是
rbg(255,0,0)
?我正在尝试我的上述代码,并意识到,我已经将其更改为实际返回红色的内容。。谢谢。尝试了上面的颜色#FF0000(红色)的建议,但它不起作用。信不信由你,有一些广泛使用的浏览器仍然不支持这一点,尽管我仍然会这样做,尽管这些用户使用上述浏览器。上面的css对我来说也有意义,但它不起作用。我想这是因为这个表有来自远程服务器的css,我不能更改它的属性。这样做可以使用$('tr:even')。每个(函数(i){$(this).find('td').css('background-color',i%2?'rgb(212212212212):'white');});除了红细胞被替换为白色或灰色外,请尝试使用!重要的是,我修改了Answer我知道CSS是解决这个问题的方法,所以我将使用您的代码!重要信息:今天晚些时候,我访问服务器并报告结果后,请立即回复。谢谢。CSS不起作用,因为已经为我从远程服务器提取的表设置了CSS:`;td.datacellone{background color:#C0C0C0;}th.datacellheader{background color:#6A5ACD;}td.alert{background color:#FF0000;}td.orange{background color:#FFA500;}td.green{background color:#008000;}信不信不信由你,有一些广泛使用的浏览器仍然不支持这一点,尽管我仍然会这样做,尽管那些用户使用上述浏览器。上面的css对我来说也很有意义,但它不起作用。我想这是因为这个表有来自远程服务器的css,我不能更改它的属性。这样做可以使用$('tr:even')。每个(函数(i){$(this).find('td').css('background-color',i%2?'rgb(212212212212):'white');});除了红细胞被替换为白色或灰色外,请尝试使用!重要的是,我修改了Answer我知道CSS是解决这个问题的方法,所以我将使用您的代码!重要信息:今天晚些时候,我访问服务器并报告结果后,请立即回复。谢谢。CSS不起作用,因为已经为我从远程服务器提取的表设置了CSS:`;td.datacellone{背景色:#C0C0C0;}th.datacellheader{背景色:#6A5ACD;}td.alert{背景色:#FF0000;}td.orange{背景色:#FFA500;}td.green{背景色:#008000;}。嘿,凯文,你的第一行代码在我的html中,其余的代码都在css中,对吗?嗯,它不起作用。这段代码使用$('tr:even').each(函数(i){$(This.find('td').css('background-color',i%2?'grey':'white');});除了红细胞被白色或灰色所取代。有什么想法吗?是的,第一行将放在当前javascript代码所在的位置,css将放在样式表中。我将两者都简化了,但以前的方法也应该有效。很可能你提到的额外css优先,你必须使上面的css更具体,以便它覆盖现有的css。嗨,凯文。我试过你的建议,但没有用。我甚至用静态表在本地服务器上也试过了。因为现有的样式,它不起作用。我看不到现有的样式。“你必须使上面的css更加具体,这样它就会覆盖现有的css”你现在的问题太本地化了<代码>!重要信息是t