私は簡単なテーブルを持っています:
<table> <tr class="none"><td>value</td><td>value</td></tr></table>
次に、すべての行のセルのすべての値を確認する必要があります。特定の行のすべての値が同じでない場合は、行のクラスを「none」から「active」に変更する必要があります。jQueryを使用してこれを行う方法はありますか?
私は簡単なテーブルを持っています:
<table> <tr class="none"><td>value</td><td>value</td></tr></table>
次に、すべての行のセルのすべての値を確認する必要があります。特定の行のすべての値が同じでない場合は、行のクラスを「none」から「active」に変更する必要があります。jQueryを使用してこれを行う方法はありますか?
以下のようなものが機能します。また、適切なマークアップのために <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>
セルの値が動的に変化し、すべてのセルを一致させたい場合は、次を試してください。
$(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/
最初の 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;
}