我有一个简单的表:动态更改CSS类行的表
<table> <tr class="none"><td>value</td><td>value</td></tr></table>
然后我需要检查每行中单元格的所有值。如果给定行的所有值都不相同,那么我需要将行的类从“none”更改为“active”。有没有办法使用jQuery来做到这一点?
我有一个简单的表:动态更改CSS类行的表
<table> <tr class="none"><td>value</td><td>value</td></tr></table>
然后我需要检查每行中单元格的所有值。如果给定行的所有值都不相同,那么我需要将行的类从“none”更改为“active”。有没有办法使用jQuery来做到这一点?
像下面的东西会工作。另外,我会建议在您的<table>
中使用<thead>
和<tbody>
以获得正确的标记。 更新:修正下面的函数来检查其他行的值;只要遇到不同的值,<tr>
就会相应地更新。
小提琴演示:http://jsfiddle.net/kaCAF/4/
<script type="text/javascript">
$(document).ready(function() {
$('#myTable tbody tr').each(function() {
//compare each cell to adjacent cells
$(this).find('td').each(function() {
var $val = $(this).text();
//checks for different values. as soon as a difference
//is encountered we move to next row
$(this).parent().find('td').each(function() {
if ($(this).text() != $val) {
$(this).parent().addClass('different');
return false;
}
});
});
});
});
</script>
<table id="myTable" border="1">
<thead>
<tr><th>Col1</th><th>Col2</th><th>Col3</th></tr>
</thead>
<tbody>
<tr><td>Val 1</td><td>Val 1</td><td>Val 2</td></tr>
<tr><td>Val 1</td><td>Val 2</td><td>Val 2</td></tr>
<tr><td>Val 3</td><td>Val 3</td><td>Val 3</td></tr>
<tr><td>Val 123</td><td>Val 123</td><td>Val 123</td></tr>
</tbody>
</table>
我不相信这回答了这个问题 - 他看起来像是在试图比较一排中的物品 - 而不是一些静态值。 – BonyT 2011-05-26 13:50:04
@BonyT:+1我很惊讶其他SO最初的这个upvoted。感谢您指出了这一点。我很乐意更新代码并为OP创建小提琴。 – pixelbobby 2011-05-26 14:59:14
如果细胞的变化动态值只是想和你所有匹配的细胞,尝试:
$(document).ready(function() {
var baseval = "";
$("table tr.active td").each(function() {
if (baseval == "") {
baseval = $(this).text();
}
else {
if ($(this).text() != baseval) {
$(this).parents("tr").removeClass("active");
$(this).parents("tr").addClass("none");
}
}
});
});
您可以获得第一个td并与其他人比较:
请参阅http://jsfiddle.net/bouillard/maCBh/
$(document).ready(function() {
$('table tr').each(function(){
var cells = $(this).find('td');
if(!compareCells(cells)){
$(this).addClass('active');
}
});
});
function compareCells(cells){
var i = cells.length;
for (i=0;i<cells.length-1;i++)
{
if($(cells[i]).html() != $(cells[i+1]).html()){
return false;
}
}
return true;
}
这是一个HTML类,而不是CSS类。 (虽然有CSS类选择器,但没有CSS类的东西)。 – Quentin 2011-05-26 13:43:58
请参阅下面的答案。另外,因为这是你的第一篇文章,我想我会提到有一个奇特的绿色复选标记,如果你觉得这是一个好的解决方案,你可以点击。欢迎来到Stack Overflow,一个网站,你可以找到人们只是_freakin'awesome_。 – pixelbobby 2011-05-26 13:44:52