我有一个表,每次按“添加”按钮时都会添加一行。我有一个“编辑”按钮,它放在新创建的行的第一个单元格中。
我想突出显示正在编辑的行。我知道我可以获得当前的<tr>
元素,如
var par = $(this).parent().parent();
但是当我使用时,
par.css('border-color', 'red');
它不会改变颜色。 我犯了什么错误,我应该如何突出那一行呢?
答案 0 :(得分:1)
假设this
引用tr
中的元素,那么最好在这里使用.closest()
var par = $(this).closest('tr')
答案 1 :(得分:1)
这真的是关于<tr>
的样式。 CSS不喜欢样式<tr>
,因为它们实际上只存在于语义中。要为其添加边框,您需要将其设为display: block;
。
这是jsFiddle和示例代码。
<强> HTML 强>
<table>
<tbody>
<tr><td>Some Content</td></tr>
<tr><td>Some Content</td></tr>
<tr>
<td>
<a href="#" class="edit">Edit</a>
</td>
</tr>
<tr><td>Some Content</td></tr>
<tr><td>Some Content</td></tr>
</tbody>
</table>
<强>的Javascript 强>
$(".edit").click(function(e) {
$(this).closest('tr').toggleClass('editting');
e.preventDefault();
});
<强> CSS 强>
table tr {
display: block;
border: 1px solid rgba(0, 0, 0, 0);
}
.editting {
background: #FAA;
border: 1px solid red;
}
请注意我是如何使用rgba
颜色使边框不透明的。还有其他方法可以做到这一点,但如果你将边框关闭,会导致表格“抖动”。