У меня есть таблица с данными, и мне нужно изменить класс тд:экв(4), а также поле для багхраунда.
У меня есть этот код:
$('tr').each(function () {
var rowCol = $(this);
rowCol.find('td:eq(4)').each(function () {
var rowValue = parseFloat($(this).text());
console.info(rowValue === 0)
if (rowValue > 1) {
$('.defects').addClass('def').removeClass('defects');
} else {
$('.def').addClass('defects').removeClass('def');
}
});
});
.defects {
background: #e74c3c;
color: #fff;
padding: 3px;
border-radius: 6px;
}
И если на этом td у меня значение больше 1, я добавляю bg red box.
Но нокс, что-то пошло не так.
Не видя вашего html, я могу только догадываться о том, как он выглядит на основе вашего кода, но попробуйте следующее:
$('tr').each(function() {
var rowCol = $(this);
rowCol.find('td:eq(4)').each(function() {
var mytd = $(this);
var rowValue = parseFloat($(this).text());
console.info(rowValue === 0)
if (rowValue > 1) {
mytd.addClass('def').removeClass('defects');
} else {
mytd.addClass('defects').removeClass('def');
}
});
});
во-первых, я назначаю ваш td:eq(4)
переменной var mytd = $(this);
.
тогда я заменяю $('.defects')
на mytd
Код
$('tr').each(function() {
var rowCol = $(this);
rowCol.find('td:eq(4)').each(function() {
var mytd = $(this);
var rowValue = parseFloat($(this).text());
console.info(rowValue === 0)
if (rowValue > 1) {
mytd.addClass('def').removeClass('defects');
} else {
mytd.addClass('defects').removeClass('def');
}
});
});
.defects {
background: #e74c3c;
color: #fff;
padding: 3px;
border-radius: 6px;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>0</td>
<td>6</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</table>
Вы можете запустить демо выше и увидеть результат.