我有一个表格里面的复选框,当你点击它,它会相应地改变背景颜色,就像这样...
$("#table tr td :checkbox").bind("click change", function() {
$this = $(this); // cache the jquery object
if($this.is(':checked')) { $this.closest('tr').css('background-color', 'lightyellow'); }
else { $this.closest('tr').css('background-color', '#fff'); }
});
这很好用,但是,我想我想做得更好,所以在您单击的表行上的任何位置,它都会选中该框并突出显示该行。
我试着使用这个代码,但不幸的是,它不工作:
$("table tr").bind("click", function() {
$(this).parents("tr").find(":checkbox").attr('checked');
});
这是HTML代码(删除了过多的内容以提高可读性...
<td>Name</td>
<td>Description</td>
<td><input type="checkbox"></td>
任何帮助将非常感激,谢谢!
3条答案
按热度按时间qco9c6ql1#
您处理的事件是tr单击。父节点是表,所以这不会有帮助。你需要做的就是在this上下文中使用find()。
我会使用.live来避免多个事件处理程序,当一个事件处理程序就可以了。
假设你在行中只有一个复选框,那么使用下面的方法。(注意,它在tbody中使用tr,以避免在head行上运行此命令)
更新
如果你想切换它,试试类似的东西
kulphzqa2#
你想改变这一点:
对此:
否则,您所做的只是 * 阅读 *
checked
属性,而不是设置它。cbjzeqam3#
我认为你只是忘记了设置属性的值。
jQuery Docs on Attributes可能会有一些帮助。
感谢redsquare注意到不需要
.parent("tr")
。