我需要根据选择中的所选颜色设置表格行的背景颜色。
我遇到了一些困难所以需要帮助。
当我从一个选择中选择颜色时,每行都会应用颜色,这不是我想要的。 我希望将颜色应用于选择颜色的特定行
有人可以帮助我吗?
HTML:
<table id="color-table">
<tr>
<td>First name</td>
<td>Last name</td>
<td>Address</td>
<td>
<select>
<option value="red">Red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
</select>
</td>
</tr>
<br />
<tr>
<td>First name</td>
<td>Last name</td>
<td>Address</td>
<td>
<select>
<option value="red">Red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
</select>
</td>
</tr>
</table>
CSS:
.red {
background: #ff3333;
}
.yellow{
background: #ffff80;
}
.green{
background: #80ff80;
}
JS:
$("select").on('change', function() {
var sel = $("select").val();
if (sel =='red')
{
$(this).addClass("red");
}
else if (sel == 'yellow')
{
$(this).addClass("yellow");
}
else if (sel == 'green')
{
$(this).addClass("green");
}
});
$('select').change(function () {
$('#color-table').removeClass('red yellow green').addClass(
$(this).find('option:selected').text().toLowerCase()
);
})
.change();
答案 0 :(得分:2)
您可以简单地使用select的值作为类名。
顺便说一下,没有参数的 removeClass()
将删除所有类。
$("select").on('change', function() {
$(this).closest('tr').removeClass().addClass($(this).val());
}).trigger('change');
.red{
background: #ff3333;
}
.yellow{
background: #ffff80;
}
.green{
background: #80ff80;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="color-table">
<tr>
<td>First name</td>
<td>Last name</td>
<td>Address</td>
<td>
<select>
<option value="red">Red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
</select>
</td>
</tr>
<br />
<tr>
<td>First name</td>
<td>Last name</td>
<td>Address</td>
<td>
<select>
<option value="red">Red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
</select>
</td>
</tr>
</table>
答案 1 :(得分:0)
你可以减少你所拥有的一切:
$('select').change(function() {
$(this).closest('tr').removeClass().addClass($(this).val())
}).change()
$('select').change(function() {
$(this).closest('tr').removeClass().addClass($(this).val())
}).change()
.red {
background: #ff3333;
}
.yellow {
background: #ffff80;
}
.green {
background: #80ff80;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="color-table">
<tr>
<td>First name</td>
<td>Last name</td>
<td>Address</td>
<td>
<select>
<option value="red">Red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
</select>
</td>
</tr>
<br />
<tr>
<td>First name</td>
<td>Last name</td>
<td>Address</td>
<td>
<select>
<option value="red">Red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
</select>
</td>
</tr>
</table>