3

私は簡単なテーブルを持っています:

<table> <tr class="none"><td>value</td><td>value</td></tr></table>

次に、すべての行のセルのすべての値を確認する必要があります。特定の行のすべての値が同じでない場合は、行のクラスを「none」から「active」に変更する必要があります。jQueryを使用してこれを行う方法はありますか?

4

4 に答える 4

6

以下のようなものが機能します。また、適切なマークアップのために <thead>and<tbody>を使用することをお勧めします。更新:他の行の値をチェックするために以下の関数を修正しました。異なる値が検出されるとすぐに、それに応じてクラスが更新されます。<table><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>
于 2011-05-26T13:31:12.900 に答える
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/

于 2011-05-26T13:38:20.230 に答える
0

最初の td を取得して他のものと比較できます: http://jsfiddle.net/bouillard/maCBh/
を参照してください。

于 2011-05-26T13:42:20.930 に答える
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;

}
于 2011-05-26T13:48:46.653 に答える