2011-05-26 14 views
3

の行のCSSクラスを変更します。すべての値が特定の行で同じでない場合は、行のクラスを「なし」から「有効」に変更する必要があります。 jQueryを使ってこれを行う方法はありますか?は、動的に、私は単純なテーブルを持っているテーブル

+0

これはCSSクラスではなく、HTMLクラスです。 (CSSクラスセレクタはありますが、CSSクラスなどはありません)。 – Quentin

+1

下記の私の答えを参照してください。また、これはあなたの最初の投稿なので、良い解決策だと感じる場合はクリックすると緑色のチェックマークが付いていると思います。 Stack Overflowへようこそ。ここでは、人々はたった今_freakin 'awesome_です。 – pixelbobby

答えて

6

次のようなものが動作します。また、適切なマークアップについては<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> 
+2

私はこれが質問に答えるとは思っていません。静的な値ではなく、行間のアイテムを互いに比較しようとしているようです。 – BonyT

+0

@BonyT:+1私は他のSOがこれを元々アップしたことに驚いています。それを指摘してくれてありがとう。私は楽しくコードを更新し、OPのためのフィドルを作成しました。 – pixelbobby

2

動的にセルの値が変更された場合、あなたはちょうどしようと、すべてのセルが一致させたい:ここで披露

$(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"); 
      } 
     } 

    }); 

}); 

http://jsfiddle.net/thomas4g/VVTjb/3/

0
$(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; 

} 
関連する問題